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