C/C++中栈溢出/Stack overflow怎么办?

​VC中栈溢出/Stack overflow怎么办?

阅读下面三篇文章就知道怎么办了!

1 http://www.cnblogs.com/areliang/archive/2012/05/11/2495470.html

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篇文章可以知道堆和栈的区别。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值