注册 登录
编程论坛 C++教室

这样的new应该怎样delete?

BlueDreame 发布于 2008-09-02 09:44, 1664 次点击
代码如下:
int* pn = (int*)(new char[20]);
...
请问是该使用
delete pn;
还是
delete[] (char*)pn;

而delete pn;会不会造成内存泄漏?
10 回复
#2
zzt_4282008-09-02 09:48
##
这个确实是个问题!
我认为应该使用 delete [] pn;
#3
守鹤2008-09-02 22:33
这里 pn是指针,存放的是地址,

应该使用 delete  pn;
#4
BlueDreame2008-09-03 14:35
我所担心的是
delete pn;
会批释放sizeof(int)个字节,后面的会泄漏。
#5
sun3895674752008-09-03 14:59
delete pn;
只释放pn指向的内存。
但sizeof申请的不止这些
所以
delete [] pn;推荐
#6
xyt_bluesky2008-09-03 16:49
delete [] pn;推荐
#7
守鹤2008-09-03 22:47
不会的,释放的是pn指针指向的空间
#8
BlueDreame2008-09-04 10:42
谢谢。
回头再找些工具测试一下。
#9
vfdff2008-09-04 18:43
delete [] pn;就可以了
申请的空间大小不是我们关心的
编译器会处理
#10
中学者2008-09-05 18:41
delete[] (char*)pn和delete [] pn都OK咧...
delete pn;会泄漏...
以上仅个人观点.
#11
晨曦的朝阳2008-09-16 22:42
对于内嵌数据类型,好像LZ说的那两个效果是一样的。(只是好像曾经看过而已,非十分确定)
1