c++ 中 delete p与 delete []p的区别

#include <cstdio>

class A
{
private:
int i;
public:
~A() { printf("hi"); }
};
void d(A *);
int main(int argc, char* argv[])
{
A *p = new A[10];
d(p);
return 0;
}

void d(A *p)
{
delete p;
}

 

输出结果 hi

 

#include <cstdio>

class A
{
private:
int i;
public:
~A() { printf("hi"); }
};
void d(A *);
int main(int argc, char* argv[])
{
A *p = new A[10];
d(p);
return 0;
}

void d(A *p)
{
delete []p;
}

 

输出结果hihihihihihihihihihi

 

 

结论:delete []p释放指向对象的指针空间  为每一个对象调用析构函数

posted @ 2014-04-17 23:02  Android开发8585  阅读(456)  评论(0编辑  收藏  举报