malloc/free是标准的库函数,而new/delete是操作符
匹配使用原则:malloc(calloc/realloc)和free 以及new/new[] 和delete/delete[];
delete 释放new分配的单个对象指针指向的内存
delete[] 释放new分配的对象数组指针指向的内存
int *a = new int[10];
delete a;        //方式1  正确
delete [] a;     //方式2  正确
  class A
   {
   private:
      char *m_cBuffer;
      int m_nLen;
   public:
      A(){ m_cBuffer = new char[m_nLen]; }
      ~A() { delete [] m_cBuffer; }
   };
   A *a = new A[10];
   delete a;         //仅释放了a指针指向的全部内存空间 但是只调用了a[0]对象的析构函数 剩下的从a[1]到a[9]这9个用户自行分配的m_cBuffer对应内存空间将不能释放 从而造成内存泄漏
   delete [] a;      //调用使用类对象的析构函数释放用户自己分配内存空间并且   释放了a指针指向的全部内存空间
对于像int/char/long/int*/struct等等简单数据类型,
由于对象没有destructor,所以用delete 和delete [] 是一样的!但是如果是C++对象数组就不同了!

最新文章

  1. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
  2. 《UML大战需求分析》阅读随笔(四)
  3. LeetCode OJ 114. Flatten Binary Tree to Linked List
  4. NOIP2003神经网络[BFS]
  5. 【caffe】三种文件类别:solver,model和weights
  6. class 文件与dex文件区别 (dvm与jvm区别)及Android DVM介绍
  7. perl处理含有中文字符的json编码
  8. Android Studio依赖dependencies和Eclipse加上lib包解决重复编译某些项目的问题
  9. CAS 之 集成RESTful API
  10. c++ 日志操作
  11. 前端js之JavaScript
  12. python dataframe数据条件筛选
  13. 让 IE9 以下的浏览器支持 Media Queries
  14. SVG 学习<六> SVG的transform
  15. ny168 房间安排
  16. Shell编程(脚本)的经常使用命令和语句
  17. 摘:C/C++中时间类time.h
  18. QT在CT上的安装及运行
  19. linux命令ls -l的默认排序方式
  20. .NET的URL重写

热门文章

  1. JS-日期和时间
  2. spring boot starter开发
  3. MySQL高级学习笔记(七):MySql主从复制
  4. 【C++第一个Demo】---控制台RPG游戏3【登陆菜单树】
  5. POJ 1797 Heavy Transportation (Dijkstra)
  6. spring配置mybatis的sqlsessionfactory
  7. python-request模块--安装
  8. linux/unix下setuid/seteuid/setreuid/setresuid
  9. USACO 2014 US Open Dueling GPS's /// SPFA
  10. collections库的namedtuple+pytest的使用