1

質問は上記のとおりです。たとえば、int* ptr = new int[10]データを使用した操作がptr2番目、3番目、5番目、または最後の要素に設定された後、呼び出しdelete[] ptrは正しいものになりますか? 説明書では見つかりません。

4

3 に答える 3

5

いいえ、オペレーターに渡される引数は、delete[]オペレーターによって返されたのと同じアドレスを指す必要があります。new[]

delete[](過負荷になっておらず、new[]クレイジーなことをしていないと仮定して)

于 2013-11-03T16:16:23.807 に答える
2

マニュアルで見つけられない

C++11 3.7.4.2/3 は言う

標準ライブラリの operator に指定された値が、または標準ライブラリdelete[](void*)のいずれかの以前の呼び出しによって返された値のいずれでもない場合、動作は未定義です。operator new[](std::size_t)operator new[](std::size_t, const std::nothrow_t&)

于 2013-11-03T17:47:24.857 に答える
2

C++ リファレンス マニュアルからdelete[] : ptr の値が無効な場合、未定義の動作が発生することに注意してください。
このため、割り当てられたメモリへのポインタを直接操作することはお勧めしません!

于 2013-11-03T16:18:20.520 に答える