C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■95399 / )  Re[3]: C++ サイズ0でnewした場合
□投稿者/ 774RR (814回)-(2020/07/28(Tue) 16:33:06)
うん? その修正は何か的外れな気がする。

コンストラクタ内で T* p=new T[n]; した結果(は普通には nullptr にはならない)を
デストラクタ内で delete[] p; する分には何一つ規格違反していないしメモリリークしてないよ
たとえ n==0 であっても

n=0; のとき T* p = new T[n]; した結果を if (n!=0) delete[] p; しているのだとしたら
それはメモリリークだけど。

delete nullptr や delete[] nullptr は「何もしない」と決まっているので
JIS X 3014:2003 5.3.5 の 2
delete[] 前の NULL チェックもいらない。

おかしい方向に舵を切る前に本当に発生している事象の正しい確認が必要そう。

返信 編集キー/


管理者用

- Child Tree -