如何解决堆栈溢出问题?

yueyucanyang 2008-09-14 12:13:07
我做的程序出现了一个堆栈溢出的问题,请问该如何解决。问题是这样的:我再想向程序里面加上一个变量,都会出问题,编译连接都过去,运行的时候提示堆栈溢出,弄得我现在都不敢在向类里边添加变量了。一添加就出现堆栈溢出现象,但是那个变量还必须有,该怎么办呢?
...全文
23458 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
caigenphoenix 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 syouweiz 的回复:]
大结构或者大数组建议在堆中动态分配内存,用完后再手工释放
[/Quote]
用new分配内存空间时就是在堆区中分配的。。。
_石头_ 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 yueyucanyang 的回复:]
....
我已经找到位置了。
有一些地方用到了一些300000个整形和双精度型的数组,并且不是动态分配的.
[/Quote]
你计算一下300000双精度的空间啊!还有17408 * sizeof(float),太大了,建议移到堆上!
yueyucanyang 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zmlovelx 的回复:]
哇你的程序可够吃内存的.
是不是定义了很大的数组了?
感觉你的程序应该重新组织.
[/Quote]

我程序里面有用new分配了17408个浮点型的数组,但在程序运行期间这些数组还必须存在,不能释放,只有程序完全结束之后才能释放,该怎么办?
yueyucanyang 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangdeqie 的回复:]
1.参数,返回值用引用
2.类不用直接定义类对象,用指针,需要时,再new,析构函数里统一delete就行

一般的小程序,这样应该就可以了
[/Quote]

我这样试了,更不行了,不知道为什么?
yueyucanyang 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 Chiyer 的回复:]
看看你的代码
[/Quote]

代码太多
还不知道问题具体出现在哪里?
yueyucanyang 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gezichong 的回复:]
再多一个变量就不可以了????

17408 * sizeof(float) = 68K

不算很大啊?

LZ可以试一下,用一个线程来动态分配这个空间,并把线程的默认栈空间设置大一点....
[/Quote]

我已经找到位置了。
有一些地方用到了一些300000个整形和双精度型的数组,并且不是动态分配的.
killercat 2008-09-15
  • 打赏
  • 举报
回复
用 new,少在栈上建立对象。
giftfish 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 Chiyer 的回复:]
看看你的代码
[/Quote]
up
yshuise 2008-09-15
  • 打赏
  • 举报
回复
判断一下越界没有就行了。
星羽 2008-09-15
  • 打赏
  • 举报
回复
看看你的代码
gezichong 2008-09-15
  • 打赏
  • 举报
回复
再多一个变量就不可以了????

17408 * sizeof(float) = 68K

不算很大啊?

LZ可以试一下,用一个线程来动态分配这个空间,并把线程的默认栈空间设置大一点....
htqx 2008-09-15
  • 打赏
  • 举报
回复
float *a = new float[17408];



wangdeqie 2008-09-14
  • 打赏
  • 举报
回复
1.参数,返回值用引用
2.类不用直接定义类对象,用指针,需要时,再new,析构函数里统一delete就行

一般的小程序,这样应该就可以了
syouweiz 2008-09-14
  • 打赏
  • 举报
回复
大结构或者大数组建议在堆中动态分配内存,用完后再手工释放
yueyucanyang 2008-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 npuhuxl 的回复:]
可能是你的变量需要的空间太大了,可以改为指针(在堆中分配资源);要不然就是你的递归层数太多,堆栈溢出。
[/Quote]

要不然就是你的递归层数太多,堆栈溢出。
这个是什么意思呢。
类和类之间传递参数过多会不会出现这个问题呢?
npuhuxl 2008-09-14
  • 打赏
  • 举报
回复
可能是你的变量需要的空间太大了,可以改为指针(在堆中分配资源);要不然就是你的递归层数太多,堆栈溢出。
bitxinhai 2008-09-14
  • 打赏
  • 举报
回复
及时的释放你new的空间,
可以在VC里面设置你的堆的大小!!!
检测漏洞,及时的消除!!
帅得不敢出门 2008-09-14
  • 打赏
  • 举报
回复
哇你的程序可够吃内存的.
是不是定义了很大的数组了?
感觉你的程序应该重新组织.
richbirdandy 2008-09-14
  • 打赏
  • 举报
回复
把那个变量放在堆那

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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