free和delete
来源:互联网 发布:最好的网络摄像头 编辑:程序博客网 时间:2024/04/26 16:39
1. delete 用于释放 new 分配的空间,free 有用释放 malloc 分配的空间
2. delete [] 用于释放 new [] 分配的空间
3. delete 释放空间的时候会调用 相应对象的析构函数
顺便说一下new在分配空间的时候同时会调用对象的构造函数,对对象进行初始化,使用malloc则只是分配内存
4. 调用free 之前需要检查 需要释放的指针是否为空,使用delete 释放内存则不需要检查指针是否为NULL
5. free 和 delete 不能混用,也就是说new 分配的内存空间最好不要使用使用free 来释放,malloc 分配的空间也不要使用 delete来释放
举个例子,<string.h>里通常有个strdup函数,它得到一个char*字符串然后返回其拷贝:
char * strdup(const char *ps); // 返回ps所指的拷贝
在有些地方,c和c++用的是同一个strdup版本,所以函数内部是用malloc分配内存。这样的话,一些不知情的c++程序员会在调用strdup后忽视了必须对 strdup返回的指针进行free操作。为了防止这一情况,有些地方会专门为c++重写strdup,并在函数内部调用了new,这就要求其调用者记得最后delete。你可以想象,这会导致多么严重的移植性问题,因为代码中strdup以不同的形式在不同的地方之间颠来倒去。
0 0
- free和delete
- free和delete
- free和delete
- 理解delete和free
- delete 和 free
- Free和Delete
- malloc/free和new/delete
- new/delete 和 malloc/free
- malloc free 和new delete
- 检验CC++free和delete
- malloc/free和new/delete
- malloc/free 和 new/delete
- free(0)和delete 0
- malloc/free和new/delete
- new/delete和malloc/free
- malloc/free和new/delete
- new、delete和malloc、free
- malloc-free和new-delete
- [ACM] hdu 2068 RPG的错排 (逆向思考,错排*组合累加)
- linux c线程池
- AWR生成报告
- 第二周作业2
- WebSphere环境搭建实践指南
- free和delete
- apache virtualHost配置
- ucenter与个人网站之间的双向同步
- Android 通过WebService调用天气预报接口
- Android smali语言功能指令详细介绍
- 关于接口与抽象类的特点
- VMware增加Linux磁盘空间
- B. Center Alignment codeforences
- 64位Win7 下的android开发环境搭建