动态内存

  1. C++中使用“new“来分配内存,虽然仍然可以像C语言中一样使用”malloc“分配内存,但是不推荐,因为”new“不止分配内存还创建对象。

  2. "new"可以分配任何类型的内存,包括自定义的类型。

  3. 代码示例

    1. //”new“的简单示例
    double* a  = NULL;//指针最好初始化为空
    a = new double;//为变量请求内存
    *a = 22.34;
    cout << *a << endl;
    delete a;//使用后删除
    //数组申请内存
    char* pvalue = NULL;
    
    1. //数组申请内存
    //一维数组
    char *pvalue = NULL;
    pvalue = new char [20];
    delete [] pvalue;
    //二维数组,以及多维数组
    char **b_pvalue = NULL;
    b_pvalue = new char *[m];
    for(int i =0; i < m; i++)
    {
     b_pvalue[i] = new char [n];
    }
    for(int i =0; i < m; i++)
    {
     delete [] b_pvalue[i];
    }
    delete [] b_pvalue;
    //三维数组
    char ***t_pvalue = NULL;
    t_pvalue = new char *[l];
    for(int i = 0; i < l ;  i++)
    {
     t_pvalue[i] = new char **[m];
     for(int j =0; j < m; j++)
     {
         t_pvlue[i][j] = new char *[n];
     }
    } 
    for(int i = 0; i < l; i++)
    {
     for(int j = 0; j < m; j++)
     {
         delete [] t_pvalue[i][j];
     }
     delete [] t_pvalue[i];
    }
    delete [] t_pvalue;
    
    1. 对象的动态内存
#include<iostream>

using namespace std;

int count  = 0;

class Box
{
    public:
    Box()
    {
        count++;
        cout << "被实例化" << count << "次" << endl;
    }
};

int main()
{
    Box* box = NULL;
    box = new Box [6];
    delete [] box;
    return 0;
}

本文章使用limfx的vscode插件快速发布