C++创建动态数组问题

[复制链接]
查看11 | 回复2 | 2011-5-19 20:43:42 | 显示全部楼层 |阅读模式
int *p=new int [5];
delete p;与delete [] p;在VC++6.0中运行都不会出错。
但是书上只说用delete[] p;这种形式,两种形式有什么区别吗?

回复

使用道具 举报

千问 | 2011-5-19 20:43:42 | 显示全部楼层
delete[] p;这个是回收你分配的5个int大小的内存,这样属于正常回收如果用 delete p;这是回收你申请着5个int大小内存的第一个内存,因为p就是接收这些内存的首地址,这样就造成了内存泄露,不会报错,但是逻辑错误
回复

使用道具 举报

千问 | 2011-5-19 20:43:42 | 显示全部楼层
基本类型没有任何区别如果是类的对象,数组必须调用时加[]否则,仅有第0个对象调用了析构函数,其他的都没有调用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行