首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

问一个关于delete的有关问题

2013-02-24 
问一个关于delete的问题遇到一个delete的问题,不知道应如何解释:char* pnew char[1000]delete p会删除p

问一个关于delete的问题
遇到一个delete的问题,不知道应如何解释:
char* p=new char[1000];
delete p;
会删除p所指向的内存么?P-1都泄露了,还是全部都泄露了?

delete reinterpret_cast<int*>(p),会删除4个字节的内存还是怎么样?

int* t=reinterpret_cast<int*>(p);
delete t;为啥会报错?

[解决办法]
char* p=new char[1000];
delete p;
会删除p所指向的内存么?P-1都泄露了,还是全部都泄露了?
---------------------
没有泄露,如果不好理解,结合malloc和free想这个问题,free的时候并没有指令要free的大小,实际上,CRT分配的时候你这个指针对应的空间大小已经记录下来了,释放的时候只需要提供指针即可

delete [] 比delete会依次对每个元素调用析构,而delete认为只有一个元素,只调用一次析构
对基本类型来说,没有析构函数,但对类来说delete []和delete就完全不一样了

总之使用者来说,按规矩办事就好,没必要去冒险

热点排行