因为物理空间存在着大小限制,因此栈空间肯定也是有大小限制的,不然程序还不崩了。
甚至,你可以测试一下,分配一个超大的栈空间(方法是,在函数中,定义一个超大空间的数组),然后看是否可以运行,当达到一个限制的时候,程序是无法正常运行的
1、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M2、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M
(1)栈大小:32位Windows,一个进程栈的默认大小是1M,在vs的编译属性可以修改程序运行时进程的栈大小
linux下:ulimit -s 查看并修改默认栈空间大小,8M(可使用命令“ulimit -s 字节数”:临时修改栈空间大小)
(2)堆大小
堆的大小理论上 ≈ 进程虚拟空间大小 - 内核虚拟内存大小。
32位windows下,进程的高位2G留给内核,低位2G留给用户,所以进程堆的大小小于2G。
Linux下,进程的高位1G留给内核,低位3G留给用户,所以进程堆大小小于3G。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)