C++传入指针并在内部new失败

Posted 朱小勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++传入指针并在内部new失败相关的知识,希望对你有一定的参考价值。

1、现象

 

 t还是空指针

2、解决

 

 

 

 

参考:https://blog.csdn.net/LYAJJ/article/details/110263038




长风破浪会有时,直挂云帆济沧海!
可通过下方链接找到博主
https://www.cnblogs.com/judes/p/10875138.html

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上失败

C++中new申请内存失败抛出异常的处理

malloc 和 new 的区别

C++ new的时候,为啥会存在内存分配会失败的情况?啥导致的呢?

c++程序new一个对象失败,可能都有哪些情况

new和malloc申请内存失败后的处理