转载自:http://blog.csdn.net/sparkliang/article/details/3670930

  为了防止内存泄漏,每一个动态内存分配必须有一个等同相反的内存释放操作,delete和new相对应,也有作为操作符的delete和作为函数的delete。

  

  第一,操作符delete,对应操作符new,释放内存,并自动调用类的析构函数,调用格式:

    delete pointer;

  

  第二,函数delete,对应函数new,操作符delete会调用函数delete释放内存,函数原型是:

    void operator delete(void *buffer);

  举个例子,语句delete ps;(ps是string指针)
  对应的代码可能是这样的:

    ps->~string();
operator delete(ps);

  最后需要注意的是如果使用了placement new,这种情况下需要显式调用类的析构函数,而不要调用操作符delete,因为这块内存不是由函数new分配的,只有你知道它来自哪里。

  最最后再回忆一下今天的内容吧:

  1. 函数delete

    void operator delete(void *buffer);  // 释放buffer所指向的内存。

  2. 运算符delete,最常用的,没什么可说的。

  3. 函数delete不会自动调用类的析构函数,因为它对分配的内存类型一无所知;而运算符delete会自动调用类的析构函数。

  4. 函数delete允许重载,而运算符delete不能被重载。

  5. placement new返回的地址,需要显式调用类的析构函数,而不要调用操作符delete。

  6. 比new简短多了。

最新文章

  1. 计算Div标签内Checkbox个数或已被disabled的个数
  2. 【python】引用其他目录文件
  3. 关于SQLSERVER中用SQL语句查询的一些个人理解
  4. ASP.NET利用WINRar实现在线解压缩文件
  5. 【转】web集群时session同步的3种方法
  6. sql语句面试总结
  7. [PWA] sw-precache
  8. css案例学习之全局声明*{} 与body{}的区别
  9. django FileFIeld和ImageField 上传路径改写
  10. [OpenCV] 编译源程序 2.4.10 以支持 CUDA
  11. 运行Office 2007安装程序提示:"找不到Office.zh-cn\OfficeMUI.xml"(转载)亲测
  12. 利用PHP访问数据库——实现分页功能与多条件查询功能
  13. plsql中文乱码
  14. FluentScheduler:开源轻量级定时任务调度架构
  15. window7安装python的xgboost库方法
  16. 解题4(NumberToEnglish )
  17. mysql的联合索引的误解
  18. Powerdesign使用小技巧(转载)
  19. 2014.8.25 CAD系统事件触发流程
  20. Linux acpi off学习的必要

热门文章

  1. [LC] 318. Maximum Product of Word Lengths
  2. Qt5 提示:无法启动此程序,计算机丢失Qt5Widgetsd.dll的解决方法
  3. ServletContext+ServletConfig内容
  4. Linux用户与用户组的关系
  5. 微软亚洲研究院开源图数据库GraphView
  6. array, matrix, list and dataframe
  7. Android实习生 —— 屏幕适配及布局优化
  8. 泰拉瑞亚Linux主机打造指南
  9. harbor自动清理镜像
  10. Dart的JIT 与 AOT