用new得到指针数据的元素,那怎么删除?
- C/C++ code
int main(){ char *a[2]; //声明一个含有两个指针元素的指针数组 char *p = "hello";//字符串常量 char *q = "world";//字符串常量 a[0] = new char[strlen(p)]; //申请内存 a[1] = new char[strlen(q)]; //拷贝常量的值 strcpy(a[0], p); strcpy(a[1], p); return 0;}请问 1怎么删除a[0] a[1]申请的内存?
2运行后并没输出内存泄露的提示,难道可以不用释放?还是因为我举的这个例子不合适?
运行环境:xp vs2008
[解决办法]
delete[] a[0]; 没错,错在你的new
a[0] = new char[strlen(p)]; //申请内存
a[1] = new char[strlen(q)];
要写成:
a[0] = new char[strlen(p)+1]; //申请内存
a[1] = new char[strlen(q)+1];
a[0]里还要存个'\0'的
[解决办法]
a[0] = new char[strlen(p) + 1]; //申请内存
a[1] = new char[strlen(q) + 1];
delete []a[0];
delete []a[1];