C++传入指针并在内部new失败
Posted 朱小勇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++传入指针并在内部new失败相关的知识,希望对你有一定的参考价值。
1、现象
t还是空指针
2、解决
参考:https://blog.csdn.net/LYAJJ/article/details/110263038
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失败的主要内容,如果未能解决你的问题,请参考以下文章
激活FXCop规则时,SonarQube扫描仪在内部部署TFS上失败