我在用C++编写一个用于链表的程序。为了实现这个概念,我在全局创建了一个指针“start”,指向列表的第一个元素。
程序完成后,我尝试通过使用start和另一个本地声明的指针“p”访问连续的节点,来删除动态分配的所有内存,以防止内存泄漏。
在这里,我使用了指向相同正确地址的指针,但是该指针不是用于内存分配的指针,而是像任何普通指针一样在本地声明。
我的问题是-是否可以通过使用指向相同位置的普通指针来删除动态分配的内存?
最佳答案
是的你可以。这是有效的:
int* p = new int;
int* q = p;
delete q;
使用new[]时的等效项:
int* p = new int[123];
int* q = p;
delete[] q;
用您的指针类型替换
int*
。之后是否设置指向nullptr
的指针尚有争议。关于c++ - 我可以删除以前动态分配但具有不同指针的内存吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47771734/