在C++中使用delete、free

作者: 2hei 发表于2008年3月 6日 21:37
版权声明: 可以转载, 转载时务必以超链形式标明文章原始出处和作者信息及版权声明
http://www.2hei.net/mt/2008/03/c-delete-free.html

今天看了一篇文章,才知道自己对delete和free的理解不对。

从前以为指针使用delete或free释放之后就万事大吉了,但事实上用delete和free释放指针内存后,指针并不会被置为空。如果在后面的程序通过判断指针是否为空来进行不同的操作,很可能导致错误,所以,今后在用delete和free释放指针内存后,一定要把指针置为空。

既然谈到了delete和free,就要说说new/delete和malloc/free。

delete和free是C++的运算符,malloc和free是C++/C语言的标准库函数,它们都是用来动态的申请和释放内存。new和delete用于对象的申请和释放。new可以完成动态内存分配和初始化工作(构造过程),delete完成清理与释放内存的工作(析构过程)。malloc和free用于类内部数据类型(无需构造和析构)内存的申请和释放。

用new创建数组,只能用对象的无参数构造函数:

Obj *objects = new Obj[100];

在用delete释放对象数组是,不要丢了[]:

delete []objects;

如果用delete objects;相当于delete objects[0],漏掉了另外99个对象。

 

| | Comments (0) | TrackBacks (0)
本篇相关文章:

java 调用dll文件总结 - 2008-04-17

构造函数和析构函数 - 2008-04-08

C++中的虚函数(学习) - 2008-04-02

引用 C++ - 2008-03-27

发表一个评论

关于这篇文章

这篇文章由2hei2008年3月 6日 21:37发布.

上一篇:VSS check out error: "Error reading from file"

下一篇:proxool与hibernate配置

回到首页 或者查看归档文章

  • Powered by FeedBurner
  • Add to Google Reader or Homepage
  • Add to My AOL
  • Subscribe in NewsGator Online
  • del.icio.us/2heidel.icio.us/2hei
  • Subscribe to feed feeds