学习笔记-c++面向对象设计-动态内存分配

学习笔记-c++面向对象设计-动态内存分配,第1张

在c语言中,我们常常使用malloc来进行动态内存分配,在c++我们学习一种新的运算符 new;

 new的用法 1.分配一个变量

P=new T;

T是任意类型名,P是类型为 T *的指针。

动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:

int * pn;

pn=new int;

* pn=5;

2.分配一个数组

P=new T[N];

T :任意类型名

P :类型为 T * 的指针

N : 要分配的数组元素的个数,可以是整型表达式

动态分配出一片大小为 N*sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。

int * pn;

int i=5;

pn=new int [i*20];

p[0]=20;

pn[100]=30;//编译没问题,运行时导致数组越界

new 运算符的返回值类型

new T;

new T[n];

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

记住 new 运算符返回的值是指针

用delete运算符释放动态分配的内存

用 “new” 动态分配的内存空间,一定要用“delete”运算符进行释放

delete 指针;//该指针必须指向new出来的空间

int * p=new int;

* p=5;

delete p;

delete p; // 导致异常,一片空间不能被delete多次

用delete运算符释放动态分配的数组

用“delete”运算符释放动态分配的数组,要加“[ ]

delete [ ] 指针;//该指针必须指向new出来的数组

int * p=new int [20];

p[0]=1;

delete [ ]p;

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/867101.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-12
下一篇2022-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存