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

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

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所开辟的结构体空间,无法直接通过变量名进行,只能通过赋值的指针进行访问。

   

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

原文地址: https://outofmemory.cn/zaji/5658466.html

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

发表评论

登录后才能评论

评论列表(0条)

保存