我可以动态分配以前分配的内存,但用不同的指针分配

Can I delete a memory previously allocated dynamically, but with a different pointer?

本文关键字:分配 指针 内存 动态分配 我可以      更新时间:2023-10-16

我正在为C 中的链接列表制作程序。为了实现该概念,我在全球范围内创建了一个指针"开始",指向列表的第一个元素。

完成程序后,我尝试通过使用起点和另一个本地声明的指针" P"访问连续的节点来动态删除所有内存以防止内存泄漏。在这里,我使用了指向相同正确地址的指针,但是该指针不是用于内存分配的指针,而是像任何普通指针一样在本地声明的指针。

我的问题是 - 是否可以使用指向同一位置的普通指针来删除动态分配的内存?

是的。这是有效的:

int* p = new int;
int* q = p;
delete q;

使用new []:

时的等效物
int* p = new int[123];
int* q = p;
delete[] q;

用指针类型替换int*。是否将指针设置为nullptr之后是辩论。

只要指针具有相同的 type and value 1 ,即从new返回的,是的,您可以使用作为delete参数。

另外,如果使用new[]

,请记住使用delete[]

1 限定器constvolatile)都没关系。请注意,您还可以使用虚拟击路仪使用指针到基类。