ホームページ > バックエンド開発 > C++ > 「operator new」と C の「new」演算子の違いは何ですか?

「operator new」と C の「new」演算子の違いは何ですか?

Barbara Streisand
リリース: 2024-12-11 00:16:08
オリジナル
495 人が閲覧しました

What's the Difference Between `operator new` and the `new` Operator in C  ?

新規オペレーターと新規オペレーター: より詳しく見る

「新規オペレーター」と「新規オペレーター」は、同じ意味でよく使用されますが、異なる役割を持っています。 C のメモリ管理。

演算子New

演算子 new は、空きストアから生のメモリを割り当てる関数です。これは低レベルであり、概念的には malloc() に似ています。ただし、通常はカスタム コンテナー内で直接使用されるか、特定のシナリオで使用されます。演算子 new は次のように明示的に呼び出すことができます:

char *x = static_cast<char *>(operator new(100));
ログイン後にコピー

さらに、演算子 new は次のシグネチャを使用してグローバルまたは個別のクラスに対してオーバーロードできます:

void *operator new(size_t);
ログイン後にコピー

New Operator

一方、new 演算子は通常、無料ストア上にオブジェクトを作成するために使用されます。演算子 new とは異なり、単にメモリを割り当てるだけではありません。メモリを割り当て、クラス コンストラクターを呼び出します。これにより、埋め込みオブジェクトや基本クラスから継承されたオブジェクトを含む、完全に初期化されたオブジェクトがメモリ内に作成されます。

my_class *x = new my_class(0);
ログイン後にコピー

主な違い

演算子 new と演算子の基本的な違いnew 演算子は、演算子 new が生のメモリを割り当てますが、new 演算子はメモリを割り当てるだけでなく、その場所にあるオブジェクトを初期化します。 new 演算子は、メモリ割り当てについては演算子 new に依存しますが、オブジェクトの初期化は自動的に処理されます。

以上が「operator new」と C の「new」演算子の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート