在C++中使用delete、free
Mar062008
作者:u2 发布:2008-03-06 21:37 分类: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个对象。
本文固定链接: https://www.2hei.net/2008/03/06/c_delete_free/ | 2hei.net
最活跃的读者