2

我看到很多 C++ 库以这种方式处理动态内存分配:

Qimage* _image = new QImage(width, height, QImage::Format_RGB888);
if (!_image)
{ 
    // Failed!
}

我发现有趣的是,可以使用简单的代码(如if (!_image).

1)我想知道这是否是标准的本机功能,new或者只有在operator new您自己的实现重载时才有可能。

2)在这种情况下,我将如何实现operator new,它接收对象构造函数的参数并在宽度&&高度为0的情况下返回NULL?

我做对了吗?

4

1 回答 1

4

你看到的是错误的。new不再返回 null 而是抛出 std::bad_alloc

重载 new有一个例子。您不需要处理构造函数参数

您正在尝试做的事情是由C++11 中的make_shared完成的

于 2011-12-08T18:52:55.443 回答