而且这个8k的内核栈,还要存放task_struct(2.6中存放thread_info),因此栈中数据不可能如此奢侈的使用。
当然有限制,你可以使用命令 ulimit -s 查看大小。因为物理空间存在着大小限制,因此栈空间肯定也是有大小限制的,不然程序还不崩了。
甚至,你可以测试一下,分配一个超大的栈空间(方法是,在函数中,定义一个超大空间的数组),然后看是否可以运行,当达到一个限制的时候,程序是无法正常运行的
在MSDN中的array declarations有如下描述:The type of integer required to hold the maximum size of an array is the size of size_t. Defined in the header file STDDEF.H, size_t is an unsigned int with the range 0x00000000 to 0x7CFFFFFF. 也就是说,只要硬件条件许可的条件下,数组的大小可以为0x7CFFFFFF(2G BYTE)。数组所占空间为:count*sizeof(TYPE) , count是数组元素的个数,sizeof(TYPE) 是一个元素所占空间字节数。如果定义数组空间超出2G,VC编译会报错:fatal error C1126: '2G' : automatic allocation exceeds 。。。因此,当实际编程确实需要使用更大的数组时,则要采用动态欢迎分享,转载请注明来源:内存溢出
评论列表(0条)