内存区别:申请内存空间,delete和delete []的区别



昨天去面试有道题是有关内存空间申请
char *p=NULL;
p= char[10];
delete p;
这是道改错题在网上看到delete后没有是释放空间以为这句话有错就改成
delete p;
后还想想好象也没错就划了没改今天用了小天时间研究了下这个问题


void
{
char *p=NULL;
p= char[10];
delete p;
//delete p;
}
对于简单数据类型delete p 和 delete p是以为在p= char[10]时候在p前13-16位代表大小(

前1-12位不知道表示啥)delete p可以知道大小所以delete p和delete p结果但对于对象就不

了如:

void
{
a
{
public :
char *m_pName;
a
{
m_pName= char[5];
cout<<"a"<<endl;
}
~a
{
delete m_pName;
cout<<"~a"<<endl;
}
};

a* c=NULL;
c= a[2];
delete c;
}
如果用delete c话可以释放a[0]空间时执行~a结束时会报错具体原因没查到看见有帖子说在<<effective c>>和<<more effective c>>中有详细介绍如果没有析构不报错
但还是 和delete和delete成对用好
有关malloc和free是c语言里和delete是c申请内存操作
Tags:  内存的区别 内存条区别 内存和硬盘的区别 内存区别

延伸阅读

最新评论

发表评论