2

このように動的メモリ割り当てを処理するC++ライブラリがたくさんあります。

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

のような単純なコードで、オブジェクトが正常に割り当てられたかどうかを確認できるのは興味深いことif (!_image)です。

1)これが標準のネイティブ機能なのnewoperator newか、それとも独自の実装でオーバーロードした場合にのみ可能なのか、疑問に思います。

operator new2)この場合、オブジェクトのコンストラクターの引数を受け取り、 width && heightが0の場合にNULLを返す場合、どのように実装しますか?

私はこれのいずれかを正しく理解しましたか?

4

1 に答える 1

4

あなたが見るものは間違っています。newは null を返さなくなりましたが、代わりに std::bad_alloc をスローします

new のオーバーロードには例があります。コンストラクターの引数を処理する必要はありません

あなたがやろうとしていることは、C++ 11 のmake_sharedによって行われます。

于 2011-12-08T18:52:55.443 に答える