空间申请,不进行初始化
空间申请+零初始化
传入的第一个参数为nullptr/NULL,功能等价于malloc
a.直接原地调整大小
重新开空间,内容拷贝,释放原有空间
new
delete
operator new
operator delete
自定义类型的对象
从堆上申请空间,并且需要用户手动释放
函数
操作符
不会初始化
可以初始化
使用时必须强转
返回的是NULL
new需要捕获异常
void MemoryLeaks() { // 1.内存申请了忘记释放 int* p1 = (int*)malloc(sizeof(int)); int* p2 = new int; // 2.异常安全问题 int* p3 = new int[10]; Func(); // 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放. delete[] p3; }
#include <iostream> using namespace std; int main() { void* p = new char[0xfffffffful]; cout << "new:" << p << endl; return 0; }