社区
C++ 语言
帖子详情
如何解决堆栈溢出问题?
yueyucanyang
2008-09-14 12:13:07
我做的程序出现了一个堆栈溢出的问题,请问该如何解决。问题是这样的:我再想向程序里面加上一个变量,都会出问题,编译连接都过去,运行的时候提示堆栈溢出,弄得我现在都不敢在向类里边添加变量了。一添加就出现堆栈溢出现象,但是那个变量还必须有,该怎么办呢?
...全文
23536
19
打赏
收藏
如何解决堆栈溢出问题?
我做的程序出现了一个堆栈溢出的问题,请问该如何解决。问题是这样的:我再想向程序里面加上一个变量,都会出问题,编译连接都过去,运行的时候提示堆栈溢出,弄得我现在都不敢在向类里边添加变量了。一添加就出现堆栈溢出现象,但是那个变量还必须有,该怎么办呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
把那个变量放在堆那
Java
解决
递归照成的
堆栈溢出
问题
本文探讨Java中递归导致的
堆栈溢出
问题
,介绍尾递归优化、迭代替代递归及增加JVM堆栈大小等
解决
方法,并通过示例代码验证其有效性。
STM32
堆栈溢出
问题
及
解决
方法
本文探讨了STM32微控制器中
堆栈溢出
的原因,包括函数嵌套过深和局部变量过大,以及其可能导致的程序崩溃、数据损坏和系统死机等
问题
。为
解决
此
问题
,建议增加堆栈大小、优化函数调用,以及在必要时使用堆内存替代堆栈。通过这些方法,可以有效防止
堆栈溢出
,确保嵌入式系统的稳定运行。
使用Java
解决
递归导致的
堆栈溢出
问题
本文聚焦Java编程中递归调用过深引发的
堆栈溢出
问题
。介绍了
堆栈溢出
的原因,即递归深度超JVM栈限制。并给出
解决
方案,如限制递归深度、用迭代替代递归、手动模拟尾递归,还提供代码示例与运行结果,助读者避免该
问题
。
IE11下javascript报
堆栈溢出
问题
的
解决
本文档提供了
解决
Internet Explorer 11浏览器中JavaScript
堆栈溢出
问题
的参考
解决
方案,包括分析
问题
原因和实施修复策略,旨在帮助开发者优化在IE11下的JavaScript代码执行。
STM32嵌入式系统中的
堆栈溢出
问题
与
解决
方案
本文围绕STM32嵌入式系统中
堆栈溢出
问题
展开。以FFT处理程序为例,分析了因在函数中定义大数组导致栈溢出的原因。介绍了使用全局变量、增加栈大小等
解决
方案,还提及检测
堆栈溢出
的硬件、软件等方法,强调要合理分配内存。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章