这样的代码会进行适当的内存释放吗?
int main(){
int *pointerA, *pointerB;
pointerA = new int[15]();
for (int i=0; i<15; i++)
pointerA[i] = i*2;
pointerB = pointerA;
if (pointerA != NULL)
pointerA = NULL;
// Some operation here ...
for (int i=0; i<15; i++)
std::cout << i << " : " << pointerB[i] << std::endl;
if (pointerB != NULL)
delete [] pointerB;
pointerB = NULL;
return 0;
我正在使用 pointerA 创建指针,但使用 pointerB 释放。 pointerB 指向与 pointerA 相同的位置。
我认为它应该正确解除分配,但我想确认一下。有什么方法可以有效地测试它吗?也许创建一个巨大的数组然后检查内存使用情况???
谢谢
最佳答案
是的,您的代码示例将正确地释放所有已分配的内存。
如果要在 pointerA
设置为 NULL
之前的行上设置断点,并比较 pointerA
和 的内存地址>pointerB
指向,你会看到它们指向内存中的相同位置。因此,使用哪个变量删除内存并不重要,因为在任何一种情况下都会删除内存中的相同位置。
关于c++ - 将内存分配给一个指针,将另一个指针指向同一个指针并删除第二个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702780/