c++——动态内存分配

一、new,delete
C++ 程序中的内存分为两个部分:
:在函数内部声明的所有变量都将占用栈内存。
:这是程序中未使用的内存,在程序运行时可用于动态分配内存。

#include"pch.h"
#include<iostream>
using namespace std;
int main() 
{
	double *pvalue = NULL;//初始化为null的指针
	pvalue = new double;//为变量请求内存

	*pvalue = 999.99;//在分配的地址存储值
	cout << "value of value : " << *pvalue << endl;
	
	delete pvalue;//释放
	return 0;
}

二、数组的动态分配
二位数组

#include"pch.h"
#include<iostream>
using namespace std;
int main() 
{
	//二位数组实例测试
	int **p;
	int i, j;//p[4][8]
	//开始分配4行8列的数据
	p = new int *[4];
	cout << p << endl;
	for (i = 0; i < 4;i++) {
		p[i] = new int[8];
		cout << p[i] << endl;
	}
	for (i = 0; i < 4;i++) {
		for (j = 0; j < 8;j++) {
			p[i][j] = j * i;
		}
	}

	//打印数据
	for (i = 0; i < 4;i++) {
		for (j = 0; j < 8;j++) {
			if (j == 0)
				cout << endl;
			cout << p[i][j] << "\t";
		}
	}

	//开始释放申请的堆
	for (i = 0; i < 4;i++) {
		delete[] p[i];
		cout << p[i] << endl;
	}
	delete [] p;
	return 0;
}

三维数组

#include"pch.h"
#include <iostream>
using namespace std;

int main() 
{
	int ***p;//p[2][3][4]
	int i, j, k;
	p = new int **[2];
	for (i = 0; i < 2;i++) {
		p[i] = new int *[3];
		for (j = 0; j < 3;j++) {
			p[i][j] = new int[4];
		}
	}

	//输出三维数据
	for (i = 0; i < 2;i++) {
		for (j = 0; j < 3;j++) {
			for (k = 0; k < 4;k++) {
				p[i][j][k] = i + j+k;
				cout << p[i][j][k] << "  ";
			}
			cout << endl;
		}
		cout << endl;
	}

	//释放内存
	for (i = 0; i < 2;i++) {
		for (j = 0; j < 3;j++) {
			delete[] p[i][j];
		}
	}

	for (i = 0; i < 2;i++) {
		delete[] p[i];
	}

	delete[] p;
	return 0;
}

三、对象动态分配

#include"pch.h"
#include<iostream>

using namespace std;

class Box {

public:
	Box() {
		cout << "调用构造函数!" << endl;
	}
	~Box(){
		cout << "调用析构函数!!!!" << endl;
    }
};

int main() 
{
	Box * myBox = new Box[4];
	delete[] myBox;
	return 0;
   	  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值