当前位置: 首页 > c > 正文

在C++中使用delete、free

今天看了一篇文章,才知道自己对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个对象。

 

本文固定链接: http://2hei.net/c_delete_free.html | 2hei's site

该日志由 2hei 于2008年03月06日发表在 c 分类下,
原创文章转载请注明: 在C++中使用delete、free | 2hei's site

报歉!评论已关闭.