c++中的delete的重要性及用法

本文详细介绍了C++中new和delete运算符的使用方法,包括如何动态分配单个变量和数组的空间,以及如何释放这些空间。此外还讨论了new与类的构造函数之间的区别,以及不当使用可能导致的内存泄漏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.new和delete运算符用于动态分配和撤销内存的运算符

new用法:

          1.     开辟单变量地址空间

               1)new int;  //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 

               2)int *a = new int(5) 作用同上,但是同时将整数赋值为5

          2.     开辟数组空间

               一维: int *a = new int[100];开辟一个大小为100的整型数组空间

               二维: int **a = new int[5][6]

               三维及其以上:依此类推.

         一般用法: new 类型 [初值]

delete用法:

          1. int *a = new int;

               delete a;   //释放单个int的空间

          2.int *a = new int[5];

               delete [] a; //释放int数组空间

 

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

          用new和delete可以动态开辟,撤销地址空间.在编程序时,若用完一个变量(一般是暂时存储的数组),下次需要再用,但却又想省去重新初始化的功夫,可以在每次开始使用时开辟一个空间,在用完后撤销它.

2.有时直接用"new+类"定义调用构造函数,则该对象动态的分配内存,同时进行初始化,而“类名+对象”这种方式则是分配好内存了,有点僵硬的感觉,

但是要用delete释放内存;

因为定义一个变量是在程序的栈中定义的,程序中的每一个函数都有自己的栈,用于为函数作用域内的变量/对象分配存储空间。当调用完此函数返回的时候,栈空间自动被收回,其中的内容也就全部无效了。而new是在堆中分配内存的,而且一经分配则永久保留,直到显式的以delete运算符来释放掉。如果不进行delete,则会造成内存泄露。

标签: C++newdelete
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值