いくつかのオブジェクトのヒープに 2D 配列を作成しました。
ステップ1)
Obj **arr = new Obj *[n];
for (int i=0;i<n;i++)
{
arr[i] = new Obj[n];
}
// したがって、これは 2D arr[n][n] を作成します...それを削除すると:
ステップ2)
for (int i=0;i<n;i++)
{
delete [] arr[i];
}
delete [] arr;
したがって、この削除が何をするのかまだわかりません。Obj のデストラクタを実行し、OS にフラグを立てて、これが現在使用可能なメモリであることを伝えますか。
今、私が本当に理解していないのは、ステップ(1)を(削除した後)再度実行すると、これらのオブジェクトが奇妙な値に初期化されますが、これは最初に実行したときは発生しません(すべてゼロで初期化されます) . 初めて運が良かっただけですか?