Malloc とコンストラクター: 探索ガイド
メモリ割り当ての領域では、標準ライブラリは std::malloc と new 式の両方を提供します。 。 new はコンストラクターを通じてオブジェクトを便利に初期化しますが、 std::malloc は行いません。これにより、std::malloc を使用するときにオブジェクトを作成し、そのコンストラクターを確実に呼び出すにはどうすればよいでしょうか?
1 つの直接的なアプローチは、意図された目的を果たす新しい式を単純に採用することです。ただし、std::malloc を使用したい場合は、別の方法があります。それは、「placement new」として知られる手法を使用してコンストラクターを明示的に呼び出すことです。
Placement New の使用
Placement new を使用すると、指定したメモリ位置にオブジェクトを明示的に作成できます。これを実現するには:
新規配置の構文は次のようになります。
<code class="c++">pointer = (type*)malloc(sizeof(type)); new (pointer) type();</code>
オブジェクトを作成した後、明示的な ~type() 構文を使用してオブジェクトを破棄し、free でメモリを解放することを忘れないでください。
次に、placement new を示すコード スニペットを示します。
<code class="c++">A* a = (A*)malloc(sizeof(A)); new (a) A(); a->~A(); free(a);</code>
placement new を利用すると、コンストラクターを呼び出しながら std::malloc でオブジェクトを作成できます。
以上が`std::malloc` を使用してオブジェクトを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。