C++ 动态内存

C++ 程序中的内存分为两个部分:

  • 栈:在函数内部声明的所有变量都将占用栈内存。
  • 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。
/*我们可以定义一个指向 double 类型的指针,然后请求内存,
该内存在执行时被分配。我们可以按照下面的语句使用 new 运算符来完成这点:
double* pvalue = NULL; // 初始化为 null 的指针
pvalue = new double;   // 为变量请求内存
delete pvalue;        // 释放 pvalue 所指向的内存

假设我们要为一个字符数组(一个有 20 个字符的字符串)分配内存,
我们可以使用上面实例中的语法来为数组动态地分配内存
char* pvalue  = NULL;   // 初始化为 null 的指针
pvalue  = new char[20]; // 为变量请求内存
delete [] pvalue;        // 删除 pvalue 所指向的数组

一维数组
int *array=new int [m];// 动态分配,数组长度为 m
delete [] array;//释放内存

二维数组
int **array
// 假定数组第一维长度为 m, 第二维长度为 n
// 动态分配空间
array = new int *[m];
for( int i=0; i<m; i++ )
{
array[i] = new int [n]  ;
}
//释放
for( int i=0; i<m; i++ )
{
delete [] arrary[i];
}
delete [] array;

三维数组
int ***array;
// 假定数组第一维为 m, 第二维为 n, 第三维为h
// 动态分配空间
array = new int **[m];
for( int i=0; i<m; i++ )
{
array[i] = new int *[n];
for( int j=0; j<n; j++ )
{
array[i][j] = new int [h];
}
}
//释放
for( int i=0; i<m; i++ )
{
for( int j=0; j<n; j++ )
{
delete array[i][j];
}
delete array[i];
}
delete [] array;


*/


#include <iostream>
using namespace std;
class Box
{
public:
	Box() 
	{
		cout << "调用构造函数!" << endl;
	}
	~Box() 
	{
		cout << "调用析构函数!" << endl;
	}
};

int main()
{
	Box* myBoxArray = new Box[4];// 动态分配,数组长度为 4
	delete[] myBoxArray; // 删除数组
	system("pause");
	return 0;
}

  

原文地址:https://www.cnblogs.com/277223178dudu/p/11439181.html