-1

重複の可能性:
new/delete と malloc/free の違いは何ですか?

誰かが以下を修正/編集してください - malloc と new の違い - すべてが正しいかどうかを確認してください。ありがとうございました、

mallocとの両方newが動的メモリ割り当てに使用されます。

mallocは C 関数ですnewが、 は C++ 演算子です。

mallocメモリを動的に割り当てる場合は特別な型キャストがnew必要ですが、型キャストは必要ありません。

メモリの割り当てに使用するときはいつでもnew、必要なコンストラクターも呼び出しますが、それmallocは行いません。

mallocNULLメモリが使い果たされた場合、失敗してポインターを返す可能性がありますnewが、NULL ポインターを返すことはありませんが、代わりに例外をスローすることで失敗を示します。

を使用している間mallocfree割り当てられたメモリを解放するために使用される C 関数です。

を使用している間newdelete割り当てられたメモリを解放し、必要なデストラクタを呼び出すために使用される C++ 演算子です。

4

4 に答える 4

1

私はあなたの違いで以下を追加したいと思います、

  1. malloc」が行うことは、メモリを割り当ててそのポインタを返すことです。何らかの理由で、C 言語の設計者はそれを標準ライブラリ関数として実装しました。一方、「new」は、メモリを割り当ててそれを呼び出すことにより、オブジェクトをインスタンス化することです。適切なコンストラクタ. この関数は、単にストレージを割り当てるものよりもはるかに言語に結びついていると私には思えます.

  2. new はコンストラクターを呼び出しますが、malloc() は呼び出しません。実際、プリミティブ データ型 (char、int、float など) も new で初期化できます。

于 2010-11-23T11:23:29.733 に答える
1

注意して覚えておくべき重要事項:

  1. placement new
  2. delete[]
  3. _set_new_handler()関数
于 2010-11-23T11:20:49.343 に答える
0

問題ないように見えますが、とを決して混ぜmallocてはならないという事実を強調することができます。deletenewfree

于 2010-11-23T11:22:28.087 に答える
0

配列の割り当てと割り当て解除には、それぞれ と をnew[]忘れないでください。delete[]

于 2010-11-23T11:22:31.717 に答える