【发布时间】:2017-04-03 20:29:46
【问题描述】:
假设我做了这样的事情:
int* arr = new int[30];
int* newArr = new int[30];
arr[15] = 5;
newArr[15] = 9;
arr = newArr;
delete[] newArr;
最后一行将释放 newArr,从而也释放 arr。但是包含 5 的内存块发生了什么?现在是永远无法再次访问的内存泄漏吗?如果是这样,我应该如何确保这个内存永远不会泄漏,同时成功地重新分配原始数组?
【问题讨论】:
-
“从而也释放 arr” 嗯??
-
@πάνταῥεῖ arr 和 newArr 指向同一个东西,所以我说我用
delete[] newArr释放它们是不是错了? -
释放两个相同的东西?这是什么意思?
-
第一个分配的内存丢失了。
-
它们指向不同的位置。
标签: c++ arrays pointers memory-leaks