记一次C内存溢出问题

记一次C内存溢出问题

问题代码

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

void func(){
char buff[1024 * 1024 * 10];
printf("hello func\n");
}

int main(int argc, char **argv){
func();
return 0;
}

编译后运行直接段错误,查了半天硬是没查出问题, 后突然想到是不是栈空间满了,查了下百度果不其然
在我的Linux下使用ulimit -s查出我的系统栈空间大小为8kb而我开辟了1MB的空间所以出现段错误

解决办法

buff变量加上static关键字或缩小buff大小即可解决问题,还可以将buff作为全局变量