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

C++中new和delete的用法(最后有new创建结构体和如何定义二维数组)

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

C++中new和delete的用法(最后有new创建结构体和如何定义二维数组)

new开辟时:

1:new开括的是堆区的内存,堆区的内存都是需要程序员手动释放,释放时使用delete,而栈区的内存由系统自己释放,不需要程序员操作。学习的暂时只是用于定义数组。说成“把地址赋给指针”

2:由于new开括的是一块地址,所以需要一个指针来接收这个地址。

3:可以分为是不是数组,不是数组的话有两种方法开辟地址;

int * p1 = new int ;//只定义没有初始化
int * p2 = new int (3);//给 p2初始化了;

 定义数组时有一种,定义的数组成为动态数组

int n ;
cin >> n ;
int * p3 = new int[n];

 当然也可以直接

int * p4 = new int[3];

这样只是将数组定义到了堆区,可以说没有必要。(也可能我还不知道)

delete删除时:

1:可以分为是不是数组;

不是数组的话直接

delete p1 ; 
p1 = NULL ;

是数组时

delete [] p3 ;
p3 = NULL ;

释放数组内存时需要在delete的后面加上[],但中括号里面不需要有数组的大小。

在最后都应该指向NULL;不然释放内存后p1就变成了空指针,还会指向内存且有危险。还要谨防重复释放内存,也会有危险,在浅拷贝时会遇到重复释放,应该使用深拷贝,即再开辟一块内存,指针指向另一块内存。

要访问new所开辟的结构体空间,无法直接通过变量名进行,只能通过赋值的指针进行访问。

   

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

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

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