我看到很多C ++库以这种方式处理动态内存分配:
Qimage* _image = new QImage(width, height, QImage::Format_RGB888);
if (!_image)
{
// Failed!
}
我发现有趣可以使用像if (!_image)
之类的简单代码检查对象是否成功分配。
1)我想知道这是否是标准new
的原生功能,或者只有在您使用自己的实现重载operator new
时才有可能。
2)在这种情况下我将如何实现operator new
,接收对象构造函数的参数,并在宽度&&身高是0?
我能做到这一点吗?
答案 0 :(得分:4)
你看到的是错的。 new doesn't return null anymore but throws std::bad_alloc instead
Overloading new有一个例子。 You don't need to deal with constructor arguments
您尝试做的事情是在C ++ 11中通过 make_shared 完成的