繁体   English   中英

我可以删除先前动态分配但具有不同指针的内存吗?

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

我在用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 .。

只要指针的类型和值 1与您从new那里获得的类型和值 1相同,是的,就可以将其用作delete参数。

另外,如果您使用过new[] ,请记住使用delete[] new[]


1 限定符constvolatile )无关紧要。 请注意,您还可以使用带有虚拟析构函数的基类的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM