グローバルなnewおよびdelete演算子の定義があるライブラリはどれですか?具体的には、ライブラリ内のどのファイルにこれらの演算子の定義が含まれていますか?
質問する
113 次
2 に答える
3
これらがどこで定義されているかは指定されていませんが、ヘッダーで宣言されていることが指定されています<new>
。<new>
(非配置式で使用される標準バージョンを使用している場合は、含める必要はありませんnew
。これらはすべての翻訳単位で自動的に使用可能になります。)
于 2012-07-05T12:04:05.370 に答える
3
およびの非配置形式(operator new
およびoperator delete
それらの配列形式)は、すべての変換単位のグローバルスコープで暗黙的に宣言されます。
標準の配置フォームはで宣言されてい<new>
ます。
ライブラリ関数の定義は一般的に利用できません。サプライヤがソースを提供する場合があります。その場合、サプライヤはどこかにあります。
あなたのコメントから、あなたはメモリを割り当てる関数ではなくnew
、new-expressionでの使用について話しているかもしれませんが。new-expressionoperator new
はコンパイラーによって処理され、必要な呼び出しとオブジェクトコンストラクターを生成します。おそらく、これの特定の実装はどこにもありません。コンパイラのコードジェネレータの関連部分を確認する必要があります。operator new
于 2012-07-05T12:07:47.823 に答える