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