今天在优快云里回了一个贴子,我按照理论上的栈大小可以有2G多的空间时,被另一个朋友指出我的错误,实际中栈只有2M,他指的是线程。可是在LINUX下进程和线程是没什么差别的。我就突然想起应该用一种什么方法来验证一下栈的大小,由GOOGLE帮忙,找到了后面的reference。
写一个hello, world程序
#include <stdio.h>
int main(int argc, char* argv[])
{
int buf[2*1024*1024];
printf("hello, world");
return 0;
}
buf的大小是2*1024*1024*4=8M。可以改变buf的大小,来验证栈的大小。我在的系统用的内核版本是2.4.20。在以上程序运行的时候出现了段错误。
References: http://coolq.blogdriver.com/coolq/26282.html
本文通过一个简单的C语言程序尝试验证栈的实际大小。通过定义一个大小为8M的数组并试图将其放在栈上,以此来观察程序的行为。实验在Linux环境下进行,并使用了2.4.20版本的内核。
2405

被折叠的 条评论
为什么被折叠?



