この質問に対するドロンの答えについて話し合っていたところ、
[one] はおそらく、C++ 標準ライブラリが内部で malloc を使用するために new を定義していることに気付くでしょう。
これが本当かどうか疑問に思っています。C++ 標準はnew
使用を定義していますmalloc
か?
この質問に対するドロンの答えについて話し合っていたところ、
[one] はおそらく、C++ 標準ライブラリが内部で malloc を使用するために new を定義していることに気付くでしょう。
これが本当かどうか疑問に思っています。C++ 標準はnew
使用を定義していますmalloc
か?
C ++標準はmallocを使用するために新しいものを定義していますか?
C ++標準( C ++言語を定義する標準ドキュメントを意味します)はoperator new
、に関して定義していませんmalloc()
。ただし、 C++標準ライブラリのほとんどの実装malloc()
がメモリの割り当てに使用することはもっともらしいです。
C ++11規格の18.6.1.1/4項による(約operator new
):
デフォルトの動作
- ループを実行します。ループ内で、関数は最初に要求されたストレージの割り当てを試みます。試行に標準Cライブラリ関数の呼び出しが含まれるかどうか
malloc
は指定されていません。
C++ 標準では、malloc を使用するために new が定義されていますか?
いいえ、多くの実装はデフォルトのnew
実装に対してそれを行いますが ( と に分離されたヒープを提供することはあまり意味がありませんmalloc
) new
。
また、によって使用されるアロケータ関数はカスタマイズ可能です (§3.7.4.1 を参照)。そのため、特定の実装であっても、malloc`new
を仮定するのは特に間違っています。new' will always call
いいえ、malloc
メモリを割り当てるだけです。ただし、new
メモリを割り当て、コンストラクターを呼び出します(必要な場合)。
あなたの実装のある部分で、メモリアロケータのようなメカニズムnew
を見つけるかもしれません。malloc
malloc
コンストラクタを認識しておらず、メモリのチャンクを宣言するよりも少し余分に必要なので、そうは思いません