VC中栈溢出/Stack overflow怎么办?
阅读下面三篇文章就知道怎么办了!
1 http://www.cnblogs.com/areliang/archive/2012/05/11/2495470.html
2 https://baike.baidu.com/item/static/9598919
3 http://blog.csdn.net/yusongwhu/article/details/3428247
第1篇文章:通过阅读第1篇文章我发现在大数组/二维数组前加static是解决方法!当然因为不管是静态全局变量,还是静态局部变量,一旦被创建,都只能在程序结束时被释放。所以如果要有效率地使用内存,还是要使用函数malloc()来动态分配堆内存。
一个使用malloc()来动态分配堆内存的例子如下:
//申请256*256的double数组
int row_malloc, column_malloc;
double **arr;
row_malloc=256;
column_malloc=256;
arr = (double **)malloc(sizeof(double *) * row_malloc); // 分配所有行的首地址
for (i = 0; i < row_malloc; i ++) // 按行分配每一列
arr[i] = (double *)malloc(sizeof(double) * column_malloc);
free(arr);//使用完后记得释放掉内存,使得程序运行时能尽量少用内存
当然因于malloc动态分配的二维或一维数组在调试时无法看到具体的每一个成员的值,所以在调试程序时还是要用加static的方法哈!
第2篇文章:第2篇文章是百度百科对关键字static的介绍,通过这篇文章可了解全局变量和静态局部变量之间的区别。
第3篇文章:通过阅读第3篇文章可以知道堆和栈的区别。