栈溢出 stack overflow 如何解决?

lowoodz 2010-09-26 11:26:35
需要进行大规模的计算,然而内存过小,应如何解决?
希望大家提供一些解决方案,使计算能在内存中运行,又不过大的影响运行速度。
...全文
459 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysjyniiq 2010-09-28
  • 打赏
  • 举报
回复
是不是递归层数过多?如果是,试试将递归改成循环。
赵4老师 2010-09-28
  • 打赏
  • 举报
回复
别忘了DOS时代的turbo C最大内存是640KB
还是用fseek、fread、fwrite文件操作模拟内存寻址和读写吧
在windows下用_lseeki64,_read,_write能模拟2的63次方字节呢!!!
xumaojun 2010-09-28
  • 打赏
  • 举报
回复
用指针吧,动态分配内存
Rainqin123 2010-09-27
  • 打赏
  • 举报
回复
内存过小,就多用堆啥。栈,在哪里看到的好像是vc6.0只支持最大分陪1024*1024,即1M的空间,多了就会异常,堆得话就不会,超出的往硬盘上分(操作系统)...(如上解释如不对请指示)
赵4老师 2010-09-27
  • 打赏
  • 举报
回复
自己用全局数组或堆中的数组甚至用文件读写模拟堆栈!
bobo364 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qinqijing_123 的回复:]
内存过小,就多用堆啥。栈,在哪里看到的好像是vc6.0只支持最大分陪1024*1024,即1M的空间,多了就会异常,堆得话就不会,超出的往硬盘上分(操作系统)...(如上解释如不对请指示)
[/Quote]

还有这么一说
michael_liuyong 2010-09-27
  • 打赏
  • 举报
回复
可以用多线程.
lazy_2010 2010-09-27
  • 打赏
  • 举报
回复
才 1024 X 1024 的矩阵啊,很小嘛( 8 M ),...

使用 double *pdf = malloc(sizeof(double) * 1024 * 1024) 来分配内存就可以了;

这年头不该使用 turbo C 了。
时间一粒 2010-09-27
  • 打赏
  • 举报
回复
如果是数组的话,可以定义为静态的数组;也可以用数据结构中的线性表作为存储结构
luciferisnotsatan 2010-09-27
  • 打赏
  • 举报
回复
在堆上分配,或者加大栈大小(在linker-》system里设置)。
xiaohuh421 2010-09-27
  • 打赏
  • 举报
回复
3.还有注意你那些类的成员变量 ,也是不要太大,太多,如果有这样的类,尽量用new来创建对象.
xiaohuh421 2010-09-27
  • 打赏
  • 举报
回复
1.临时变量最好不要太多,太大.占用空间大的临时变量(如:char buf[1024*1024];)尽量用new或者malloc在堆上分配.
2.尽量减少递归层次.
somebody 2010-09-27
  • 打赏
  • 举报
回复
1.使用堆转存是一种解决办法
2.还有我觉得可以考虑把你的计算过程文件分块,用多线程!
mao_pu_hua 2010-09-27
  • 打赏
  • 举报
回复
栈是比较小的,大概只有2M吧,一般情况下,函数参数,还有char a[]这种的都是在栈中的。可能你分配的太多了吧。以前我在linux内核中经常出现这个问题的,特别是递归或者循环次数太多的情况下,或者是函数调用太频繁,不要用栈。
可以用堆,kmalloc或者是malloc出来,堆差不多是不限制大小的,随便用。记得回收就ok了
peter_chou 2010-09-27
  • 打赏
  • 举报
回复
栈大小可以修改,修改成足够用的大小即可。
小魔菇 2010-09-27
  • 打赏
  • 举报
回复
少在栈中分配大的变量 不要进行递归调用
常用函数可以申明为 inline
Qlaiaqu 2010-09-27
  • 打赏
  • 举报
回复
占用内存多的其实都有对应的占用内存小的解决方案,这时候就是cpu事件花的多了。
熊熊大叔 2010-09-27
  • 打赏
  • 举报
回复
使用占内存小的算法啊。
大家平时老说数据结构和算法学了没用,这下有用了吧。
lowoodz 2010-09-27
  • 打赏
  • 举报
回复
谢谢大家的回帖。留个题目:在turboC上进行1024*1024矩阵的乘法。
pengzhixi 2010-09-26
  • 打赏
  • 举报
回复
少弄些递归函数。
加载更多回复(1)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧