求解释。。。堆栈。
...
char tel[100000][16];
...
运行会出错,是栈出问题了吗?
那我要如何应付这种问题……记住可用空间?
哪位大神能帮忙解释下C堆栈的使用……
[解决办法]
栈空间不足以分配这么大的内存出来。malloc出来吧
[解决办法]
可以把它放在main函数的外面这样可能就能分配出来了。
[解决办法]
那个是全局变量了,不是在栈上分配空间了。
[解决办法]
不过1M的内存不至于崩溃,我试过放在栈里面了,没有崩溃,贴出完整的代码吧
[解决办法]
之前写过《C/C++变量在内存中的分布》
http://blog.csdn.net/morewindows/article/details/6851681
楼主可以参考下,对理解堆栈有一定的帮助。
以后会再写几篇Windows系统堆栈的文章,欢迎浏览。
[解决办法]
linux下测试过,没有问题。
测试代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
char a[100000][16] = {"123445566","qwertyuioop"};
printf("a[0] = %s\na[1] = %s\n",a[0],a[1]);
return 0;
}
测试环境:ubuntu12.04
[解决办法]
作为程序员的素养来说,对于大变量(超过1K)都应该用malloc来分配。
[解决办法]
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。
[解决办法]
通常这么大会栈溢出,你不可能弄台有100多个GB内存的服务器在那上面开发.