我是否需要对分配给另一个指针的指针调用 delete
Do I need to call delete to a pointer assigned to another pointer?
>假设我有这个:
char* data = new char[3];
char* tmp = data;
data = new char[3];
之后,我应该像这样为两个指针调用 delete:
delete[] data;
delete[] tmp;
还是仅用于数据:
delete[] data;
我尝试了第一种方法,但它给了我一个堆错误,第二种方法没有给我带来任何问题,但是内存tmp指向什么,那里会有内存泄漏吗?
重要的是要了解 delete
运算符释放由上一个new
分配的任何内存。因此,根据 new 的出现,对相同分配内存的删除调用应该匹配。
在您的情况下,有两个调用new
,new char[3]
分配给data
进一步分配给tmp
。此时,tmp
和 data
都引用(点(堆上的同一内存位置。第二次调用new
,new char[3]
进一步分配相当于3个字符存储的内存并将其分配给data
。因此,在两个分配的块上调用delete
两次是有意义的,由tmp
和data
单独引用。
相关文章:
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将指针从一个void函数传递到另一个C++
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 将指针分配给另一个指针时会发生什么情况?
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++将一个指针分配给另一个指针时执行的类型检查
- 将一个类的方法指针存储到另一个类中
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- 初始化类中的指针数组,并在另一个类中检索它
- 从另一个指针指向函数的指针
- 使用指向成员函数的指针在另一个类中调用类构造函数
- 我正在尝试将表的地址传递给要在另一个函数中使用的指针,但得到不兼容的指针类型
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- 无法"this"指针传递到另一个类并在 CPP 中调用该类的任何方法
- 如果类"A"具有指向另一个类的指针,则"B" A 可以访问 B 类公共方法
- 如何使用指针从另一个类访问属性
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- C++ 无效双指针干扰另一个
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针