New和Delete都是C++常用关键字,但是内部原理着实不简单,我此篇是站在浅学用之的角度来归纳其表面使用和浅层原理。
如果想深入理解这两个关键字我推荐一下这篇博客:http://www.cnblogs.com/hazir/p/new_and_delete.html
首先在用法明确几点:
1.他们是系统关键字。
2.他的标准实现在C++标准头文件是#include <new>
(实际上引用了<iostream>的话会间接引用到<new>)
3.我们大部分最经常使用它的时候,实际是把他们作为一种运算符函数来使用
(如::operator delete (p)等效于delete p),
使用目的就是灵活的申请内存上的空间并灵活使用后再最终释放。
4.像任何运算符一样,他们可以被重载overload
(除非你深知原理别轻易玩这两个的重载,大部分时候我们也不这么玩重载)
总结一下最简单的用法(免误导初学先只谈最常用用法)。
注意:
new 和 delete 成对
new [] 和 delete []成对
普通:
//例子中MyClass可以换成任意其他类型包括基础类型int什么的
MyClass *p=new MyClass();//申请内存,返回指针,申请失败直接异常
delete p; //释放指向的申请内存
p=nullptr; //为了防止野指针
数组
MyClass *arr=new MyClass[8];
delete[]arr; //释放指向的申请内存
arr=nullptr; //为了防止野指针