c++ - 我可以删除以前动态分配但指针不同的内存吗?

标签 c++ pointers linked-list dynamic-memory-allocation delete-operator

我正在用 C++ 编写链表程序。为了实现这个概念,我在全局创建了一个指针“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/

相关文章:

c - 如何将链表传递给C中的函数

c++ - 使用 Boost::Regex 获取最后一场比赛

c++ - 在 unordered_set 中插入一个新元素 : should the hint be end()?

c++ - Valgrid 错误 - 条件跳转或移动取决于未初始化的值

c++ - 带指针的可调整大小数组

c - 如何更改结构体中指针指向的值?

c++ - 如何在 C++ 中将方法实现为 final(在 JAVA 中为 final)?

c++ - 如何在不溢出的情况下将Python转换为C++?

c - 不工作单链表 C

c - 删除c中链表中的元素