读书人

用new得到指针数据的元素那如何删除

发布时间: 2012-06-05 13:54:06 作者: rapoo

用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];

读书人网 >C++

热点推荐