对函数调用过程的栈空间结构以前就知道,直到周二技术沙龙有同事提出不同看法,当时未能作答,这里分析一下。测试代码如下:int add(int a, int b){ int i = a + b; return i;}int func(int a, int b){ return ad...
分类:
其他好文 时间:
2014-12-27 21:45:31
阅读次数:
158
【const】0.普通const对象定义在栈空间中{ int a = 10; const int b = 100; cout << &a << ' ' << &b;}Result: 0x22abec 0x22abe8注:Code::Blocks + Cygwin测得。1.对变量类型...
分类:
编程语言 时间:
2014-12-27 00:15:47
阅读次数:
268
纤程(Fiber)和协程(coroutine)是差不多的概念,也叫做用户级线程或者轻线程之类的。Windows系统提供了一组API用户创建和使用纤程,本文中的库就是基于这组API实现的。纤程的概念中有两个关键点:
纤程拥有独立的栈空间和寄存器环境;
纤程在用户态实现调调度,也就是说完全由程序员控...
分类:
编程语言 时间:
2014-12-21 22:01:08
阅读次数:
269
1 内核线程
内核为每个线程分配8K的栈空间, 在每个堆栈的顶部放着struct thread_info 结构体,用来保存线程相关信息.
其中有几个重要变量:
Preempt_count :
此变量分为四部分
0-7bit :当前进程是否能抢占的标志
8-15bit:softirq 使能标志
16-23bit :hardirq 使能标志
24bit:PREEMPT_ACTIVE...
分类:
系统相关 时间:
2014-12-13 10:52:06
阅读次数:
485
首先来说说概念,一个进程至少会有一个进程,当然一个进程中也可以开启多个线程。我们就可以让一个程序在同一时间看上去能做多个事情,比如可以在接受用户响应的时候进行一些计算。线程也不可以随便开,普通应用程序来说每一个线程默认情况下都会占用1M的栈空间,在32位Windows平台下可以给一个用户进程使用的程...
分类:
编程语言 时间:
2014-12-11 18:49:59
阅读次数:
169
最小栈
最小栈其实和栈没有什么区别的,唯一的区别在于最小栈是可以在O(1)时间内得到当前的栈空间里,最小的值是多少。
最小栈的操作
最小栈的操作和普通栈的操作没有太大区别,唯一多了一个方法就是getMin()方法,这个方法是用来获取当前栈内的最小值。其他方法就是Push(), Pop(), Top()...等
在O(n)时间内找到新的最小值
这里就厉害了,先说普通的O...
分类:
编程语言 时间:
2014-12-05 07:07:28
阅读次数:
293
linux查看修改线程默认栈空间大小 ulimit -s1、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M2、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M3、可以在/etc/rc....
分类:
编程语言 时间:
2014-12-04 00:55:27
阅读次数:
319
最近都忙的没空写题解了喵~看到 1= 终于是保住了也算是一个小小的安慰吧 555……湖北省队互测题,据说会爆栈,但 Linux 下 栈空间=内存=128M 真的吃不下?反正我是写了个人工栈~这似乎是我近 4 天里写的第 3 道树链剖分? 1 #include 2 #include 3 #i...
分类:
其他好文 时间:
2014-12-01 23:44:05
阅读次数:
264
Sort ListSort a linked list in O(n log n) time using constant space complexity.使用Merge Sort, 空间复杂度是 O(logN) 因为使用了栈空间。SOLUTION 1:使用Merge Sort来解决问题。为什么不...
分类:
其他好文 时间:
2014-11-29 21:28:58
阅读次数:
203
本文要点:1.值类型和引用类型的区别2.复制变量值3.内存4.传递参数5.执行环境及作用域问题1.基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的。(1)值类型:数值、布尔值、n...
分类:
Web程序 时间:
2014-11-24 17:03:35
阅读次数:
291