栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

在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;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853207.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号