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;
}