c – 如何使用新的操作符检查内存分配故障?

最近我把我的项目的语言转换为使用C.
使用C,我使用malloc,之后我检查malloc是否成功,但是使用C,我使用’new’分配内存,我想知道如何通常检查内存分配失败。

从我的谷歌搜索,我看到没有像下面这样。

char *buf = new (nothrow)char[10];

我也看到如下。

try{} catch(bad_alloc&) {}

但是下面呢?我正在使用一些chrome库例程来使用智能指针。

例如,我的代码如下。

scoped_array<char> buf(new char[MAX_BUF]);

使用智能指针是非常好的,但我不知道如何检查内存分配是否成功。
我需要用nothrow或try / catch分成两个单独的语句吗?
你如何通常在C中进行这些检查?

任何建议将不胜感激。

那么你打电话给new_alloc,所以你必须抓住它:

try
{
    scoped_array<char> buf(new char[MAX_BUF]);
    ...
}
catch(std::bad_alloc&) 
{
    ...
}

要么

scoped_array<char> buf(new(nothrow) char[MAX_BUF]);
if(!buf)
{
   //allocation failed
}

我的意思是,智能指针传播异常。所以如果你用普通的扔新内存来分配内存,你必须抓住一个异常。如果你正在分配一个nothrow新的,那么你必须检查nullptr。在任何情况下,智能指针不会添加任何东西到这个逻辑

http://stackoverflow.com/questions/6833143/how-to-check-memory-allocation-failures-with-new-operator

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 如何使用新的操作符检查内存分配故障?