首页 > 编程语言 > 详细

C++学习笔记2

时间:2020-01-30 10:25:32      阅读:87      评论:0      收藏:0      [点我收藏+]

动态内存分配

其实在学C语言的时候,我们就已经用malloc函数去实现了,当然在C++里也有新的方法。
今天学习的是在C++环境下的动态内存的分配。

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

有这么两种用法:
1.分配一个变量
exp.
P=new T;
其中 T:任意类型名
P:类型为T*的指针
动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。
exp.

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

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

int *pn;
int i=5;
pn=new int[i*20];
pn[0]=20;
pn[100]=30;//编译没有问题,运行时导致数组出界

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

delete指针:该指针必须指向new出来的空间
注意点首先:
1.用new动态分配的内存空间,一定要用delete运算符进行释放
exp.

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

2.用“delete”释放动态分配的数组,要加[]
exp.

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

当初学C的时候就对动态内存分配这块的知识非常的不了解,希望在C++的学习中能对此有更深一层的认识与更熟练的应用。

C++学习笔记2

原文:https://www.cnblogs.com/AirBirdDD/p/12240827.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!