我在一些对象的堆上创建了一个二维数组:
步骤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 的析构函数并标记操作系统,告诉它这是现在可用的内存。
现在我真的不明白的是,当我再次执行步骤(1)时(在我删除之后),我将这些对象初始化为奇怪的值,但是我第一次这样做时并没有发生这种情况(全部为零初始化) . 我第一次运气好吗?