读书人

问一个关于delete的有关问题

发布时间: 2013-02-24 17:58:56 作者: rapoo

问一个关于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就完全不一样了

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

读书人网 >VC/MFC

热点推荐