new delete
2024-09-03 17:30:08
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++对象数组就不同了!
最新文章
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
- 《UML大战需求分析》阅读随笔(四)
- LeetCode OJ 114. Flatten Binary Tree to Linked List
- NOIP2003神经网络[BFS]
- 【caffe】三种文件类别:solver,model和weights
- class 文件与dex文件区别 (dvm与jvm区别)及Android DVM介绍
- perl处理含有中文字符的json编码
- Android Studio依赖dependencies和Eclipse加上lib包解决重复编译某些项目的问题
- CAS 之 集成RESTful API
- c++ 日志操作
- 前端js之JavaScript
- python dataframe数据条件筛选
- 让 IE9 以下的浏览器支持 Media Queries
- SVG 学习<;六>; SVG的transform
- ny168 房间安排
- Shell编程(脚本)的经常使用命令和语句
- 摘:C/C++中时间类time.h
- QT在CT上的安装及运行
- linux命令ls -l的默认排序方式
- .NET的URL重写
热门文章
- JS-日期和时间
- spring boot starter开发
- MySQL高级学习笔记(七):MySql主从复制
- 【C++第一个Demo】---控制台RPG游戏3【登陆菜单树】
- POJ 1797 Heavy Transportation (Dijkstra)
- spring配置mybatis的sqlsessionfactory
- python-request模块--安装
- linux/unix下setuid/seteuid/setreuid/setresuid
- USACO 2014 US Open Dueling GPS&#39;s /// SPFA
- collections库的namedtuple+pytest的使用