Chinaunix首页 | 论坛 | 博客
  • 博客访问: 667587
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: C/C++

2011-06-20 22:21:19

1、delete是用于释放申请的内存,对于内部数据类型,其delete 和 delete []的效果一样,没有什么区别,如下:
  1. int main()
  2. {
  3.     int *p = new int;
  4.     delete p; //delete []p 两种方式都可以

  5.     return 0;
  6. }
  1. int main()
  2. {
  3.     int *p = new int[10];
  4.     delete p; //delete []p 两种方式都可以

  5.     return 0;
  6. }
2、对于非内部数据,在使用delete释放内存空间时,必须严格区分数组内存释放和单个对象内存释放,即此时的delete p和delete []p并不能随便使用。
  1. class Base
  2. {
  3. public:
  4.     int value;
  5. };

  6. int main()
  7. {
  8.     Base *p = new Base[10];
  9.     delete []p;   //不能写成delete p

  10.     return 0;
  11. }
虽然写成注释后面的情况,在VC编译器下并不会报错,但是最后并不是释放所有数组的内存,而只释放了一个元素的。
 
阅读(646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~