当前位置: 技术问答>linux和unix
关于linux的栈空间问题
来源: 互联网 发布时间:2016-02-23
本文导语: 写了一个程序测试栈空间情况 #include #include int main(void) { for (int i = 0; ; ++i) { printf ("%dn", i); alloca (1); } } 按理说栈空间默认为8M,但每次都没分配够8388608个字节就段错误...
写了一个程序测试栈空间情况
#include
#include
int
main(void)
{
for (int i = 0; ; ++i)
{
printf ("%dn", i);
alloca (1);
}
}
按理说栈空间默认为8M,但每次都没分配够8388608个字节就段错误了
而且每次最终分配的大小还不一样,测试了两次,分别为786209和785553
这是为什么?
#include
#include
int
main(void)
{
for (int i = 0; ; ++i)
{
printf ("%dn", i);
alloca (1);
}
}
按理说栈空间默认为8M,但每次都没分配够8388608个字节就段错误了
而且每次最终分配的大小还不一样,测试了两次,分别为786209和785553
这是为什么?
|
你运行这个程序本身也需要栈空间啊
再则,你分配一段空间,系统需要相应的一段空间来维护它.还要考虑字节对齐等等
你把你每次分配的空间大小设的大些,就能看出来了,你可以设1000看看
再则,你分配一段空间,系统需要相应的一段空间来维护它.还要考虑字节对齐等等
你把你每次分配的空间大小设的大些,就能看出来了,你可以设1000看看