针对c++初学者 new用法解读

针对c++初学者 new用法解读

动态内存分配技术是在程序运行时,按照需求随时在堆上动态
分配一块内存空间供程序使用,在使用完毕后再由程序释放,
其中,被动态申请和释放的称为堆对象。

内存动态申请

new运算

语法格式:new 数据类型(初值列表):
new运算的作用就是程序运行到该运算时,申请一块用于存储相应数据类型的内存空间,如果申请成功的话,就会对用初值列表的值,对这块内存空间进行初始化,并返回这块内存的首地址,因此new运算必须将其返回值赋给一个指针,才可以保证后续使用和内存释放,如果内存申请失败,编译器会抛出异常,或返回一个空指针。

内存动态释放

delete运算

语法格式:delete 指针变量名;
当用new运算申请的内存使用完毕后,使用delete运算符进行内存的
动态释放

例子:

#include<iostream>
using namespace std;
int main()
{
	double* p = new double(5.33);  
	// 内存申请一块用于存放一个double类型的内存空间
	// 将5.33赋给这块空间
	// 将给空间的首地址用来初始化指针变量p
	// *p=5.33
	int* p1 = new int(10);
	int* p2 = new int(20);
	delete p;
	delete p1 ,p2;  //delete 运算符后可释放多个指针
	return 0;
}

动态分配的内存是由于是用户自己申请的,系统不知道它何时使用完毕,
也就不存在生存期的概念,系统不会自行释放这些内存,必须由用户
自行释放,因此每一次new运算就必须相应使用一次delete运算,否则
系统有什么内存活动都要避开这块内存,造成内存泄漏。

动态数组

因为通常动态分配一个变量意义不大,这里有动态数组的创建。
语法格式: new 数据类型 [数组长度];
数组长度的基本要求和非动态创建基本一样,但这里允许变量的出现。
delete 语法格式 :delete 指针变量名;
注意delete前的[] 不可以省略。
例:

#include<iostream>
using namespace std;
int main()
{
	int c=5;
	float* p = new float[c * 4];
	//结果是动态创建一个长度为20的一维数组
	delete[]p;
	return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值