Table of Content
本篇主要介绍C++ 中的动态内存。
在 C 语言中我们可以使用 malloc
、calloc
、realloc
、free
等进行动态内存操作,在 C++ 中,除了兼容 C 中的动态内存分配的方法之外,还提供了两个关键字 new
和 delete
。
使用new
/delete
来分配指定类型变量的内存:
int* p = new int;
//申请内存的时候进行初始化
int* p = new int(66);
//释放内存空间
delete p;
p = NULL;
申请指定类型数组大小的内存:
int* p = new int[5];
//申请数组大小的内存并初始化(C++11标准)
int* p = new int[5]{11,22,33,44,55};
//释放数组大小的内存
delete[] p;
p = NULL;
申请和释放 N 维数组大小的内存:
// 需要用一个 N-1 维数组指针去指向申请的内存
int (*p)[4] = new int[3][4];
delete[] p;
p = NULL;
// 需要c++11标准支持
int (*p)[2] = new int[2][2]{/**/{1,2} , {3,4}};
delete[] p;
p = NULL;
int (*p)[3][4] = new int[2][3][4];
delete[] p;
p = NULL;
定位分配:
new(指针) 类型(初始值)
//指针表示分配内存的起始地址