delete [] p 与 delete p的区别??

aprccherry 2005-01-04 11:03:08
小弟,才疏学浅有下面的问题请大家执教??3x!!

char * p = new p[bufsize];
if(p != NULL)
{
delete[] p ; //如果这句话变为delete p ;会有什么区别???
p = NULL;
}

...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aprccherry 2005-01-04
  • 打赏
  • 举报
回复
哦,原来如此,3x
chenqing1128 2005-01-04
  • 打赏
  • 举报
回复
楼上的,如果用delete p,只是表面上你看不到也不会报错,但是会有内存泄漏
goodluckyxl 2005-01-04
  • 打赏
  • 举报
回复
怎么会等同呢?

delete[] p;将length个stl对象都释放
delete p释放当前一个

如果length == 1那么就等效果的
aprccherry 2005-01-04
  • 打赏
  • 举报
回复
那么,如果如下,
struct st1
{
...
};

void * p = new struct st1 [length];
delete [] p ; //就不等同于delete p;?????
goodluckyxl 2005-01-04
  • 打赏
  • 举报
回复
[] 后缀释放 释放>=2以上对象空间的地址
delete 一次释放一个对象空间

oo 2005-01-04
  • 打赏
  • 举报
回复
delete[] p ; //如果这句话变为delete p ;会有什么区别???
会free内存,但只调用一次析构函数(delete[]会调用bufsize次析构函数,但因为是char类型,所以没啥区别)
CMyMfc 2005-01-04
  • 打赏
  • 举报
回复
char *p = new char;
delete p;

char *p = new char[LENGTH];
delete []p;

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧