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

new与delete动态分配和释放内存

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

new与delete动态分配和释放内存

(一)new运算符

 

(1)new运算符使用的一般格式:

new 类型 [初值];

用new分配空间时不指定初值。如果由于内存不足等原因而无法正常分配空间,那么new会返回一个空指针NULL,用户可以更具该指针的值判断分配空间是否成功。

例如:
new int;//开辟一个存放整形的存储空间,返回一个指向该存储空间的地址(指针)。

new int (100);//开辟一个存放整形的空间,并指定该整数的初值为100。

new *c=new char [10];//开辟一个存放字符数组的空间,返回首地址。

float *p=new float (1.14159);

//开辟一个存放单精度数的空间,并指定该实数值为3.14159,将返回该空间的地址赋给指针变量p


(2)用new动态建立一个对象:

new Worker;

编译系统开辟了一段内存空间,并在此内存空间存放了一个Worker类对象。但此时用户还无法访问这个对象,因为这个对象既没有对象名,用户也不知道它的地址,这种对象称为无名对象。它确实存在,但没有名字。

用new运算符动态分配内存后,将返回一个指向新对象的指针值,即所分配的内存空间的起始地址。用户可以获得这个地址,并通过这个地址来访问这个对象。需要定义一个指向本类的对象的指针变量来存放该地址。

Worker *pt;//定义一个指向Worker类对象的指针pt

pt=new Worker;//在pt中存放新对象的起始地址

(3)C++还允许在执行new时,对新建对象进行初始化。例如:

Student *pt=new Student (1,"zhangsan',4000);

在执行new运算符时,如果内存量不足,无法开辟所需的内存空间,目前大多数C++编译系统都会使用new返回一个0指针。只要检测返回值是否为0,就可以判断分配内存是否成功。

(二)delete运算符 delete运算符的一般形式

delete [ ] 指针变量;

例如要撤销上面用new开辟的存放单精度数的空间,方法如下:

delete p;

要撤销上面用new开辟的存放字符数组的空间,方法如下:

delete [ ] c;

要撤销上面用new开辟的对象空间,方法如下:

delete pt;


new与delete动态分配和释放内存j举例
#include
using namespace std;
//1.new的基本用法
int *func()
{
	//在堆区创建建整形数据
	//new 返回的是 该数据类型的指针
	int *p=new int (10);
	return p; 
 } 
 void test01()
 {
 	int *p=func();
 	cout<<*p< 

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

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

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