相关疑难解决方法(0)

如何使用新运算符检查内存分配失败?

就在最近,我将项目的语言切换为使用C++.使用C语言,我使用了malloc,然后检查malloc是否成功但是使用C++,我使用'new'来分配内存,我想知道你是怎么做的通常会检查内存分配失败.

从我的谷歌搜索,我看到如下所示.

char *buf = new (nothrow)char[10];
Run Code Online (Sandbox Code Playgroud)

我也看到了以下内容.

try{} catch(bad_alloc&) {}
Run Code Online (Sandbox Code Playgroud)

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

例如,我有如下代码.

scoped_array<char> buf(new char[MAX_BUF]);
Run Code Online (Sandbox Code Playgroud)

使用智能指针很棒,但我不确定如何检查内存分配是否成功.我是否需要使用nothrow或try/catch分成两个单独的语句?你通常如何在C++中进行这些检查?

任何建议将被认真考虑.

c++ memory-management smart-pointers

26
推荐指数
3
解决办法
3万
查看次数

标签 统计

c++ ×1

memory-management ×1

smart-pointers ×1