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

C++のmallocとnewの違い

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

C における malloc と new の主な違いは、malloc によって割り当てられたメモリは手動で解放する必要があるのに対し、new によって割り当てられたメモリは自動的に解放されることです。 Malloc は、割り当てが失敗した場合は NULL を返し、新しい割り当てが失敗した場合は例外をスローします。 New は割り当てられたメモリを自動的に初期化しますが、malloc によって割り当てられたメモリは手動で初期化する必要があります。 new は配列割り当て、カスタム アロケーターなどの高度な機能をサポートしていますが、malloc はそれをサポートしていません。

C++のmallocとnewの違い

#C における malloc と new の違い

malloc と new はどちらも C で一般的に使用されるメモリ割り当て関数です。しかし、それらの間にはいくつかの重要な違いがあります。

1. 構文

<code class="cpp">void *malloc(size_t size);
void *new(size_t size, std::nothrow_t = nullptr);</code>

2. 戻り値

    ##malloc:
  • If If割り当てが成功すると、割り当てられたメモリへのポインタが返され、割り当てが失敗した場合は NULL が返されます。
  • new:
  • 割り当てが成功すると、割り当てられたメモリへのポインタが返されます。失敗すると、std::bad_alloc 例外がスローされます。
3. メモリ管理

##malloc:
    割り当てられたメモリは C ランタイム ライブラリによって管理され、手動で行う必要があります。
  • free を使用して解放します。 new:
  • 割り当てられたメモリは C ランタイム ライブラリによって管理され、delete を使用して自動的に解放できます。
  • #4. 初期化

##malloc: 割り当てられたメモリは初期化されていないため、手動で初期化する必要があります。

  • new: 割り当てられたメモリは、コンストラクターを使用して自動的に初期化されます。
  • 5. 例外処理

malloc: 割り当てが失敗した場合、例外はスローされませんが、NULL はスローされます。返される。

  • new: 割り当てが失敗した場合、std::bad_alloc
  • 例外がスローされ、例外処理に使用できます。
  • 6. 高度な機能

new: 配列割り当てやカスタム アロケータ、配置などのさまざまな高度な機能をサポートします。新しい、など

  • malloc: これらの高度な機能はサポートされていません。
  • 概要
一般に、malloc と new はどちらもメモリ割り当て関数ですが、new の方が安全で使いやすく、自動的に初期化して例外を処理できます。 。単純なメモリ割り当てシナリオの場合は malloc を使用できますが、より多くの機能が必要な複雑なシナリオの場合は new をお勧めします。

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

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