c++ 应对内存不足 申请失败 的情况【2013.12.02】

原创 2013年12月02日 14:48:01

c++ 应对内存不足 申请失败 的情况【2013.12.02】

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 


对计算机来说,内存永远是有限的。有用完的时候。

对程序来说,虽然内存用完的情况万年都不一定碰到一次,但是这种情况是存在的,所以需要对这种情况做处理。


简单的方法:【设置内存申请失败异常函数】


c++ 内存申请失败的时候会抛出bad_alloc。但是总不能每次new的时候都 try catch吧!

c++ 提供 出错处理函数 set_new_handler

typedef void (*new_handler)();
new_handler set_new_handler(new_handler p) throw();

看定义得出,只要声明一个 没有 参数 没有返回值的函数 new_handler ,然后传给 set_new_handler 就可以了,如下代码:

void nomorememory()
{
	cerr << "无法申请内存\n";
	abort();
}


int main()
{
	set_new_handler(nomorememory);          //直接传函数指针就可以了。
	int *pbigdataarray = new int[100000000];//申请这么多,呵呵...测试测试

	...
	
}

迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 

VS编译的程序出现内存不够的解决办法

LINK的/STACK选项    /STACK   :reserve[,commit]    reserve:栈总大小    commit:程序开始时系统提供的实际内存量   ...
  • heyanhema
  • heyanhema
  • 2014年08月07日 14:36
  • 4043

32位模式下C/C++程序可用最大内存

关于32位程序申请大内存问题(1.6G). 我在win7 64系统上面测试 Visual studio 10 int* Test=new int[1024*1024*200]; int* Test...
  • cupidove
  • cupidove
  • 2015年05月06日 11:47
  • 10980

高质量的c/c++编程有关malloc分配内存不足的问题

如果在申请动态内存时找不到足够大的内存块,malloc 和new 将返回NULL 指针, 宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。 (1)判断指针是否为NULL,如果是则马上用ret...
  • qq_26460507
  • qq_26460507
  • 2017年09月13日 23:27
  • 162

改善C++ 程序的150个建议学习之建议30:new内存失败后的正确处理

建议30:new内存失败后的正确处理       应该有很多的程序员对比尔•盖茨的这句话有所耳闻:对于任何一个人而言,640KB应当是足够的了。(640K ought to be enough fo...
  • baliguan163
  • baliguan163
  • 2013年09月13日 09:35
  • 1005

漫谈C++内存分配失败

没错,是“漫谈”,而且“漫”得有点乱。然而,抛砖尚可引玉,想到的事情,纵然脉络不是很畅,写下来也不是坏事。开卷有益,动笔也有益。   一切缘自一位C语言开发经验非常丰富的的朋友问我的一个问题。朋友...
  • steedhorse
  • steedhorse
  • 2011年10月19日 00:26
  • 13775

处理new分配内存失败情况

转自:http://www.51testing.com/html/70/n-827070.html 在C++语言中,我们经常会使用new给一个对象分配内存空间,而当内存不够会出现内存不足的情况。...
  • onlyonename
  • onlyonename
  • 2013年03月10日 08:47
  • 7469

STL容器vector的内存问题

在STL的容器中,vector可以说是最容易理解和使用的容器了,以前使用数组的时候,如果不确定有多少数据要存储,就会预先分配一个大的数组,如果实际没有用到那么多,又会浪费很多的内存资源,如果不分配大的...
  • shudou
  • shudou
  • 2013年12月15日 19:57
  • 5419

C# 开启大地址内存以应对32位机器内存不够用问题

在目前很多机器都使用8G内存情况下,很多软件却无法有效使用更高内存,本文主要简述使用C#语言开发的应用程序,使用系统自带的Editbin工具开启3G大内存使用...
  • chuiwenwei_csdn
  • chuiwenwei_csdn
  • 2016年04月12日 11:03
  • 1997

android开发中模拟系统内存不足 应用释放的情况

android开发中模拟系统内存不足 应用释放的情况android的开发就是这个吊样子,Activity什么时候释放,没有任何的消息,或者通知你,就直接把你的内存释放了。这给很多开发人员来说,都是不小...
  • weizongwei5
  • weizongwei5
  • 2016年01月14日 10:52
  • 4122

CentOS 7 源码编译mysql5.7.11 ,如果在阿里云内存不足编译失败处理方法

安装依赖包 1 yum -y install gcc gcc-c++ ncurses ncurses-devel cmake 下载相应源码包 cd /us...
  • liusuihui
  • liusuihui
  • 2017年04月24日 08:22
  • 1085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ 应对内存不足 申请失败 的情况【2013.12.02】
举报原因:
原因补充:

(最多只允许输入30个字)