前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++复合类型(使用new来分配内存/创建动态数组、delete释放内存)

c++复合类型(使用new来分配内存/创建动态数组、delete释放内存)

作者头像
亦小河
发布2022-11-14 16:56:55
8810
发布2022-11-14 16:56:55
举报
文章被收录于专栏:技术博客感悟技术博客感悟

一、使用new来分配内存

以下代码演示了如何将new用于两种不同的类型。

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
	int nights = 1001;
	int* pt = new int;
	*pt = 1001;
	cout << "nights value = ";
	cout << nights << ":location " << &nights << endl;
	cout << "int";
	cout << "value = " << *pt << ": location = " << pt << endl;
	double* pd = new double;
	*pd = 10000001.0;
	cout << " double ";
	cout << "value = " << *pd << ": location = " << pd << endl;
	cout << "location of pointer pd: " << &pd << endl;
	cout << "size of *pt = " << sizeof(*pt) << endl;
	cout << "size of pd = " << sizeof pd;
	cout << ": size of *pd = " << sizeof(*pd) << endl;
	return 0;
	
}

1、学习使用new来分配内存之前要了解指针的用法。

2、指针真正的勇武之地在于,在运行阶段分配未命名的内存以存储内存;

在c语言中,可以用库函数malloc()来分配内存;在c++中仍然可以这样做,但c++还有更好的方法——new运算符。

二、使用delete释放内存

代码语言:javascript
复制
int * ps = new int;
.   .   .
delete ps;

1、只能用delete来释放使用new分配的内存。然而,对空指针使用delete是安全的。

2、养成良好的代码习惯,当创建new时最好同时敲出delete用来释放。

三、使用new来创建动态数组

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
	double* p3 = new double[3];
	p3[0] = 0.2;
	p3[1] = 0.5;
	p3[2] = 0.8;
	cout << "p3[1] is " << p3[1] << ".\n";
	p3 = p3 + 1;
	cout << "Now p3[0] is " << p3[0] << " and ";
	cout << "p3[1] is " << p3[1] << ".\n";
	p3 = p3 - 1;
	delete[] p3;
    return 0;
	
}

1、使用new[ ]为数组分配内存,则应使用delete[ ]来释放。

2、使用new[ ]为一个实体分配内存,则应使用delete(没用方括号)来释放。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档