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 サイトの他の関連記事を参照してください。