社区
C++ 语言
帖子详情
如何解决堆栈溢出问题?
yueyucanyang
2008-09-14 12:13:07
我做的程序出现了一个堆栈溢出的问题,请问该如何解决。问题是这样的:我再想向程序里面加上一个变量,都会出问题,编译连接都过去,运行的时候提示堆栈溢出,弄得我现在都不敢在向类里边添加变量了。一添加就出现堆栈溢出现象,但是那个变量还必须有,该怎么办呢?
...全文
23471
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
打赏
举报
回复
把那个变量放在堆那
搜索溢出:浏览器扩展,可让您从DevTools中搜索
堆栈溢出
搜索溢出 浏览器扩展程序,可让您从DevTools中搜索
堆栈溢出
。 特征: 即时搜索 带有代码段的完整质量检查数据 箭头键导航: 左右切换窗格 在
问题
之间上下移动 去做: 添加任务运行器。 即:咕Gr声或咕Gu声
解决
问题
1 将其移植到Angular(或React?) 信用: 使用Stack Exchange API 来自Noun项目的QA图标
递归要素及太深导致
堆栈溢出
怎么办?
递归太深导致
堆栈溢出
怎么办? 2个手段: 1.限制递归深度,设置一个阈值,超过就返回。 2.在堆上模拟函数调用栈,自己实现压栈出栈,这样就解除了栈溢出的根源
问题
。
为什么会
堆栈溢出
问题
?
在一个算法中,如果递归函数调用过多次数,那么就会导致
堆栈溢出
。 原因就是,操作系统会自动给每个进程分配一个最大栈空间2M,如果超过了这个上限,就会导致递归函数执行终止,所以就会报错。递归就像你一直在往一个空间里放东西,也就是一直在入栈,调用一次会把内存地址进行一次入栈,直到调用结束,才会将地址出栈。想一想,是不是如果调用次数过多,入栈的内存地址大于2M,就会引起程序报错呢? 同样的,如果你创建...
计算机内部如何防止溢出,电脑提示
堆栈溢出
是什么意思 该怎么
解决
如何
解决
电脑提示
堆栈溢出
的
问题
?我们在使用电脑过程中,常常会碰到各种各样的
问题
,例如最近有用户表示操作电脑过程遇到了浏览器网页弹出“来自网页的消失”对话框,并且系统出现提示“
堆栈溢出
”,那么
堆栈溢出
是什么意思呢?又应该怎么
解决
呢?下面小编就为大家带来
解决
电脑提示
堆栈溢出
的方法介绍,一起来看看吧!一、
堆栈溢出
的含义
堆栈溢出
就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,...
Java
解决
递归照成的
堆栈溢出
问题
递归是一种常见的编程技术,通过函数调用自身来
解决
问题
。虽然递归在
解决
某些
问题
时非常方便,但如果递归的深度过大,可能会导致
堆栈溢出
。
堆栈溢出
通常发生在递归调用没有合适的终止条件或递归深度过大时,导致 JVM 的调用栈空间耗尽。本文将深入探讨
堆栈溢出
的原因,并提供几种常见的
解决
方法,以帮助你编写更健壮的递归代码。本文将分析递归导致
堆栈溢出
的原因,并介绍几种在 Java 中
解决
这一
问题
的常见方法。我们将通过代码示例展示如何使用尾递归优化、迭代替代递归,以及增加 JVM 堆栈大小等方法来避免
堆栈溢出
。
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章