[C++学习笔记]6 动态内存分配

用new运算符实现动态内存分配

分配一个变量:
P = new T;
T是任意类型名,P是类型为T * 的指针。
动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:

int * pn;
pn = new int;
* pn = 5;  

分配一个数组:
P = new T[N];
T:任意类型名
P:类型为T * 的指针
N:要分配的数组元素的个数,可以是整型表达式
动态分配出一片大小为 N * sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。

new运算符的返回值类型:

new T;
new T[n];

这两个表达式返回值的类型都是T *

int * p = new int;

用“new”动态分配的内存空间,一定要用“delete”运算符进行释放
delete指针;//该指针必须指向new出来的空间

int * p = new int;
* p = 5;
delete p;
delete p; //导致异常,一片空间不能被delete多次

用“delete”释放动态分配的数组,要加“[ ]”
delete[]指针;//该指针必须指向new出来的数组

int * p = new int[20];
p[0] = 1;
delete [] p;


站在巨人的肩上
【1】北京大学信息技术学院《程序设计实习》

原创文章 21 获赞 16 访问量 1533

猜你喜欢

转载自blog.csdn.net/Allen_Spring/article/details/105457093
今日推荐