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

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

Barbara Streisand
リリース: 2024-12-22 15:44:10
オリジナル
792 人が閲覧しました

What's the Difference Between C  's

C の "New 演算子" と "Operator New" の違いを理解する

"new" 演算子と "operator new" C では、オブジェクトを動的に作成するためのメモリ管理で異なる関数を実行します。

演算子 New: Raw メモリ割り当て

「Operator new」は、オペレーティング システムから RAW メモリを割り当てる低レベル関数です。これは「malloc」関数と同様に機能し、コンストラクターやデストラクターを呼び出すことなく、指定されたサイズのメモリ ブロックを提供します。次のように「operator new」を直接呼び出すことができます:

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

「operator new」をオーバーロードすると、特定の型またはグローバルにメモリ割り当てをカスタマイズできます。そのシグネチャは通常次のとおりです。

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

新しい演算子: コンストラクターを使用したオブジェクトの作成

対照的に、「new」演算子は通常、オブジェクトを動的に作成するために使用されます。 。まず「operator new」を呼び出してメモリを割り当て、次に適切なコンストラクターを呼び出してオブジェクトを初期化します。このプロセスには、埋め込みオブジェクト コンストラクターと基本クラス コンストラクターを適切な順序で呼び出すことも含まれます。

例:

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

Key Distinction

"operator new" と "new" 演算子の主な違いは、前者は生のメモリを割り当てるだけであるのに対し、後者はメモリ割り当てとオブジェクトの作成とを組み合わせるということです。初期化。 「演算子 new」はメモリ管理をより詳細に制御できる一方、「new」演算子はメモリ割り当てとオブジェクト初期化の両方を処理することでオブジェクトの作成を簡素化します。

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

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