ozm*_*zmo 2 c++ memory arrays delete-operator
在C++中,我理解delete
运算符在与数组一起使用时"销毁"它,释放它使用的内存.但是这样做会发生什么?
我想我的程序只会标记要重新使用的堆的相关部分,并继续.
但我注意到,数组的第一个元素也设置为null,而其他元素保持不变.这有什么用途?
int * nums = new int[3];
nums[0] = 1;
nums[1] = 2;
cout << "nums[0]: " << *nums << endl;
cout << "nums[1]: " << *(nums+1) << endl;
delete [] nums;
cout << "nums[0]: " << *nums << endl;
cout << "nums[1]: " << *(nums+1) << endl;
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 19
delete[]
调用时会发生两件事:
在调用之后访问数组占用的内存会delete
导致未定义的行为(也就是说,任何事情都可能发生 - 数据可能仍然存在,或者当您尝试读取它时程序可能会崩溃,或者可能发生更糟糕的事情).