ホームページ  >  記事  >  バックエンド開発  >  C++のnewとmallocの違い

C++のnewとmallocの違い

下次还敢
下次还敢オリジナル
2024-05-01 12:09:18256ブラウズ

new と malloc の違い: new はタイプセーフな C 演算子で、指定された型のオブジェクトを作成し、そのオブジェクトへのポインターを返すために使用されます。 malloc は、型なしのメモリ ブロックを割り当て、そのメモリ ブロックへの void* ポインタを返す C 標準ライブラリ関数です。 new はコンストラクターとデストラクターを呼び出しますが、malloc は呼び出しません。 new は C ランタイムによってメモリを管理しますが、malloc は手動で管理する必要があります。

C++のnewとmallocの違い

C における new と malloc の違い

C では、newmalloc はすべて、動的メモリ割り当てに使用される関数です。ただし、これらの間にはいくつかの重要な違いがあります。

  1. 構文と戻り値の型:
  • new は次のとおりです。指定された型の新しいオブジェクトを作成し、そのオブジェクトへのポインターを返す C 演算子。
  • malloc は、指定されたサイズのメモリ ブロックを割り当て、そのメモリ ブロックへの void* ポインタを返す C 標準ライブラリ関数です。
  1. タイプ セーフ:
  • new は型をチェックするため、タイプ セーフです。メモリを割り当てるときに一致します。たとえば、int* p = new int; は整数ポインターを割り当てますが、p = malloc(sizeof(int)); は型チェックを行わずにメモリ ブロックのみを割り当てます。
  • malloc はタイプセーフではなく、メモリを割り当てるだけであり、呼び出し元はオブジェクトのタイプを管理する責任があります。
  1. #構築と破棄:
  • ##new オブジェクトのコンストラクターが最初に呼び出されます。次に、オブジェクトへのポインタを返します。オブジェクトがスコープ外になると、そのデストラクターが自動的に呼び出されます。
  • malloc コンストラクターまたはデストラクターを呼び出しません。これらの関数は呼び出し元が手動で管理する必要があります。
  1. メモリ管理:
  • new メモリ管理は C ランタイムによって処理されます。バックグラウンドで内部ヒープを維持し、メモリの割り当てと解放を担当します。
  • malloc 手動のメモリ管理が必要です。呼び出し元は、メモリの割り当て、解放、再割り当てを行います。メモリ管理が不適切だと、メモリ リークやセグメンテーション違反が発生する可能性があります。

概要:

  • new は、新しいオブジェクトを作成するための C のタイプセーフ演算子です。
  • malloc は、型なしの生メモリを割り当てるために使用される C 標準ライブラリ関数です。
  • 動的メモリ割り当ての場合、C プログラムでは通常、
  • new がより安全で望ましい選択です。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。