社区
C++ 语言
帖子详情
使用new时,出现内存不足
herrycsdn
2004-01-31 03:05:07
因为用了几个new分配了不少空间,以至于运行时出现“内存不足”的警告,请问如何避免。本人的程序只是用来做试验,能用就行了。多谢指点
...全文
973
30
打赏
收藏
使用new时,出现内存不足
因为用了几个new分配了不少空间,以至于运行时出现“内存不足”的警告,请问如何避免。本人的程序只是用来做试验,能用就行了。多谢指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sharkhuang
2004-02-03
打赏
举报
回复
查查你程序是不是内存泄漏才是正解!
山中老狼
2004-02-03
打赏
举报
回复
用完以后一定要记的用delete回收空间啊!
herrycsdn
2004-02-03
打赏
举报
回复
如何查?请指点,谢谢
Iaoapbicfis
2004-02-02
打赏
举报
回复
比尔盖斯讲过:每个人只要690KB的内存就够了。
你的物理内存是多大?虚拟内存是多大?
你是不是在以前运行的程序中使用了new没有配对的使用delete,而积累下来的结果?
Yssss1980
2004-02-02
打赏
举报
回复
90%是你程序的问题
nlstone
2004-02-02
打赏
举报
回复
short* a = new short[256*256];
这才哪到哪,不可能内存不足啊
hifrog
2004-02-02
打赏
举报
回复
由于编译器的限制,给一个程序分配的运行动态栈空间是有限的。不过不知道楼主为什么一次要用new分配那么多空间呢?不过想new那么多空间似乎是被定死的,那我们可以换令一种思路,就是把暂时不用数据放在文件里,只把需要处理的数据作为从文件读入的变量加载到程序堆栈,这也相当于借用磁盘空间做虚拟内存。当然。这需要通过文件输入输出流来控制。
以上只是我的一种思路。如果硬塞,那就要扩充动态分配栈了,不过这需要编译器的支持。
coolness
2004-02-02
打赏
举报
回复
你确定是内存不足的问题吗?!
herrycsdn
2004-02-02
打赏
举报
回复
楼上说得有理
我现在想要一个可以分配空间的方法,除了delete以前分配空间,没有其它方法吗?
谢谢!!
hifrog
2004-02-02
打赏
举报
回复
new是在程序运行空间(堆栈)上分配空间,不是内存不足,而是动态分配栈溢出。
hifrog
2004-02-02
打赏
举报
回复
用new分配空间不足不是内存的限制,而是程序运行时程序堆栈的限制,这和编译器有关。
wangfeng20004
2004-02-02
打赏
举报
回复
计算机可能会因为内存不足而无法满足new的要求,这时C++通常会给出两种解决方法:一,让
new在无法满足内存请求时返回以空指针;二,让new引发bad_alloc异常机制。
下面的程序清单使用了这两种方法:
#include<iostream.h>
#include<new>
#include<stdlib.h>
struct Big
{
double stuff[2000];
};
void main()
{
Big*pb;
try{
cout<<"trying to get a big block of memory :\n";
pb=new Big[10000];
cout<<"Got past the new request :\n";
}
catch(bad_alloc&ba)
{
cout<<"Cought the exception :\n";
cout<<"ba.what()<<endl;
exit(1);
}
if(pb!=0)
{
pb[0].stuff[0]=4;
cout<<pb[0].stuff[0]<<endl;
}
else
cout<<pb is null pointer :\n"
delete[]pb;
return 0;
}
以上的解释希望你能从中有所收获!
herrycsdn
2004-02-02
打赏
举报
回复
多谢诸位!
是有几个new过没有delete掉的,但是那些分配的空间,我还要使用。大概分配了350kb的空间吧,
wangfeng20004
2004-02-02
打赏
举报
回复
楼上的观点也值得想想,再仔细看看源程序!
sunwt
2004-02-01
打赏
举报
回复
to tlping(音乐虫子
是可以保证new里面的异常产生时,有足够内存抛出此异常的。
nlstone
2004-02-01
打赏
举报
回复
new造成的内存不足症结:
1使用了较小的固定的虚拟内存而造成无法new大内存,可改大或让windows自己管理。
2硬盘空间太小,删掉部分垃圾,使硬盘空间远大于你new的空间
硬盘足够,new一般不会造成内存不足的,我new过至少800Mb的空间(硬盘一阵狂读)
cupidvenus
2004-02-01
打赏
举报
回复
贴出代码来
tlping
2004-02-01
打赏
举报
回复
1,增大虚拟内存。2,购买物理内存
系统级异常建议不要捕获,有可能会出现新的问题,因为本身内存就不足,捕获异常本身也是要消耗异常的,这样会不会出现堆栈溢出?
wshcdr
2004-02-01
打赏
举报
回复
贴出代码来吧
herrycsdn
2004-02-01
打赏
举报
回复
多谢各位指点!!
请问如何捕获异常啊,
程序运行到new这一步就弹出一个“内存不足”的对话框。
以前也常这样用,从来没有出现过这样的问题
加载更多回复(10)
C# GDI+绘图
出现
内存不足
问题
C#GDI+绘图
出现
内存不足
问题 这两天开发一个图片放大功能,通过读取保存在数据库中的二进制图片流,在Datagridview中显示,然后选中列表中的图片进行放大的显示的功能。在 放大过程中
出现
“
内存不足
”的异常;...
Bitmap循环加载图片
出现
内存不足
解决办法
循环加载图片的
时
候报错“
内存不足
”,解决办法,下面是我的个人实例: 原来的写法(会报“
内存不足
”): private void aviSaveAs() { try { OleDbConnection conn = bc.GetConn(); conn.
oracle 尝试分配
内存不足
,ORA-04030: 在尝试分配...字节(...)
时
进程
内存不足
的原因分析解决方法...
字节(...)
时
进程
内存不足
。根据异常信息,可以很容易的判断是由于内存
使用
过多,分配不足所致的,但是电脑本身内存并不小,由此可以说明oracle在分配内存
时
,应该是有限制的,当超出这个限制的
时
,就会
出现
这个错误...
采用
new
分配内存失败
时
为什么会
出现
两种错误报告方式?
在C++语言中,我们经常会
使用
new
给一个对象分配内存空间,而当内存不够会
出现
内存不足
的情况。C++提供了两中报告方式: 1、抛出bad_alloc异常来报告分配失败; 2、返回空指针,而不会抛出异常。 C++为什么...
Qt5.9Creator
内存不足
,
出现
程序卡死,提示:.exe程序已停止工作
本文主要总结在Qt5.9Creator编译器下,由于指针变量创建的
内存不足
,
出现
程序卡死的问题和解决办法。 1.1程序
出现
的错误提示:.exe程序已停止工作 我创建了一个整形变量的指针*a(int *a =
new
int;),我需要用...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章