c++ new 对象问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ new 对象问题相关的知识,希望对你有一定的参考价值。
C++ new 一个指针对象失败后,怎么判断失败,如何处理失败的结果呢??求助!
new 返回一个指定类型的指针,这个指针指向成功分配动态内存块的首地址,在分配失败的情况下,抛出异常std::bad_alloc而不是返回NULL,因此通过判断返回值是否为NULL是徒劳的。
#include <iostream>using namespace std;
char *GetMemory(unsigned long size)
char *p = new char[size];//分配失败,不是返回NULL
return p;
int main()
try
char *p = GetMemory(10e11);// 分配失败抛出异常std::bad_alloc
//...........
// if(!p)//徒劳
// cout<<"failure"<<endl;
delete [] p;
catch(const std::bad_alloc &ex)
cout << ex.what() << endl;
return 0;
参考技术A Effective有一节专门讲这个,通常的处理是用 try catch来做异常处理,
new分配失败后会有一个bad alloc的异常。
失败了就是对象没分配成功,一般只要有内存都不会失败的,因为可以用虚拟内存,
失败了一般是内存耗尽了,这种属于系统严重故障了。这种时候恐怕不止你这一个
软件有问题,系统上运行的其他软件也会有问题。追问
嗯,有个例子就懂了,谢啦
以上是关于c++ new 对象问题的主要内容,如果未能解决你的问题,请参考以下文章
没有 new 关键字并使用指针的 C++ 对象初始化 [重复]