【C++】运算符new和delete

运算符new和delete

C++使用运算符new和delete动态进行内存分配和释放

1、运算符new和delete的基本形式

(1)new的基本形式

       运算符new从称为堆的一块自由内存存储区中为程序分配一块与类型字节数相适应的内存空间,并将该块内存的首地址存于指针变量中

【示例】

指针变量名=new 类型;

int *p;        //定义一个整型指针变量p
p=new int;     //new动态分配存放一个整数的内存空间,并将首地址赋给指针变量p

(2)detete的基本形式
运算符detele用于释放运算符new分配的存储空间

【示例】

delete 指针变量;

delete p;        //将new动态分配内存空间释放

(3)使用new和delete的示例

#include<iostream>
using namespace std;

int main()
{
	int *ptr;
	ptr=new int;
	*ptr=10;
	cout<<"* ptr = "<<*ptr;
	delete ptr;
	
	return 0; 
 } 

【运行结果】 

2、运算符new和delete的优点

(1)使用malloc函数时必须使用sizeof函数计算所需的字节数,而new可以根据数据类型自动计算说要分配内存大小

(2)new自动返回正确的指针类型,而不必像malloc函数,必须在程序中进行强制类型转换

3、运算符new为数组动态分配内存空间

(1)一维数组

【示例】

int *p=new int [10]

(2)多维数组

int *p=new [2][3][4]

其中第1维的界值可以是任何合法的正整数表达式

int i=2;
int *p=new int [i][3][4];

(3)new为简单变量分配内存的同时,进行初始化

指针变量名 =new 类型(初值);

【示例】

 #include<iostream>
using namespace std;

int main()
{
	int *ptr;
	ptr=new int(10);
	cout<<"* ptr = "<<*ptr;
	delete ptr;
	
	return 0; 
 }

【示例运行结果】

(4)释放动态分配的数组存储区

delete [ ]指针变量; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值