64,680
社区成员
发帖
与我相关
我的任务
分享
delete ptr 的意思是释放指针ptr所指的内存。
char *pc2=new char[len+1];
指针pc2指向的是 char[len+1]数组的首元素
如果delete pc2,只能释放首元素的内存
要想释放pc2所指的数组char[len+1]的全部内存,必须写为:delete []pc2,
意思就是释放指针pc2所指的数组的内存。
野指针的情况不会出现,指针类型对象跟int型对象一样,同样系统为它分配了一块
内存块,当该对象超出作用域时,自动释放该内存块。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class T {
public:
T() { cout << "constructor" << endl; }
~T() { cout << "destructor" << endl; }
};
int main(){
const int NUM = 3;
T* p1 = new T[NUM];
cout << hex << p1 << endl;
// delete[] p1;
delete p1; //对于基本数据类型如int,delete和delete[]是一样的,但对于自定义类型,
//delete无法回收全部内存,楼主可以运行该程序看下,这里我把正确的写法给注释了
T* p2 = new T[NUM];
cout << p2 << endl;
delete[] p2;
return 0;
}