我可以动态分配以前分配的内存,但用不同的指针分配
Can I delete a memory previously allocated dynamically, but with a different pointer?
我正在为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 限定器(const
,volatile
)都没关系。请注意,您还可以使用虚拟击路仪使用指针到基类。
相关文章:
- 通过双指针分配指针
- 在不工作的情况下为数组分配指针,但反过来也可以
- 无法使用"std::make_shared"分配指针
- 分配指针时出现分段错误
- 为什么有时仅使用Ampersand运算符在C 中分配指针
- 重新分配指针阵列的一部分的安全方法
- 为什么在执行增量操作之前分配指针值
- 当指针指向的对象被另一个类的实例删除时,重新分配指针
- 在堆上分配指针的原因是什么?
- 有没有办法防止分配指针?
- 将运算符重写应用于具有动态分配指针的类
- 在堆上分配指针数组
- 在另一个结构中的结构内解除分配指针
- 分配指针后,是否可以为指针指向的事物分配变量名称?
- 重新分配指针后,将类功能与指针一起使用
- 为什么我的新分配指针会自动在程序退出上删除
- 分配指针的方法之间有什么区别?
- 如何声明和分配指针
- 内存分配(指针和堆栈)
- 通过参数分配指针的值