zoukankan      html  css  js  c++  java
  • 数组内存的释放与申请

    参考链接:https://www.cnblogs.com/usec/p/7413829.html

    使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存。常见的申请内存的方法有两种:malloc/free 和 new/delete。

    一、malloc/free

    (1)申请一维数组

    复制代码
    void dynamicCreate1Array()
    {
        int m;
        int i;
        int *p;
    
        cout<<("please input the length of data:");
        cin >> m;
    
        p = (int*)malloc(sizeof(int)*m);//动态开辟  
    
        cout << "please input data" << endl;
        for (i = 0; i < m; i++)
            cin >> p[i];
    
        cout << "data is :";
        for (i = 0; i < m; i++)
            cout << p[i] << endl;
        free(p);
    }
    复制代码

    (2)申请二维数组

    复制代码
    void dynamicCreate2Array()
    {
        int m, n;
        int i, j;
        int **p;
    
        printf("please input the row and col:");
        cin >> m >> n;
        //scanf("%d%d", &m, &n);
    
        p = (int**)malloc(sizeof(int*)*m); //开辟行  
    
        for (i = 0; i < m; i++)
        {
            *(p + i) = (int*)malloc(sizeof(int)*n);//开辟列  
        }
        //输入数据  
        printf("please input data:");
        for (i = 0; i < m; i++)
            for (j = 0; j < n; j++)
                cin >> p[i][j];
        //输出数据  
        for (i = 0; i < m; i++)
        {
            for (j = 0; j < n; j++)
            {
                cout << p[i][j];
            }
            cout << endl;
        }
        //释放开辟的二维空间  
        for (i = 0; i < m; i++)
            free(*(p + i));
    }
    复制代码

    二、new/delete

    (1)申请一维数组

    复制代码
    void DynamicCreate1Array()
    {
        int len;
        int i;
    
        cout << "please input the length of data: ";
        cin >> len;
    
        int *p = new int[len];
    
        cout << "please input data: ";
        for (int i = 0; i < len; i++)
            cin >> p[i];
    
        cout << "data is " << endl;
        for (i = 0; i < len; i++)
            cout <<p[i] << endl;
    
        delete[] p;
    }
    复制代码

    (2)申请二维数组

    复制代码
    void DynamicCreate2Array()
    {
        int m, n;
        int i;
        cout << "input row and col: ";
        cin >> m >> n;
    
        //动态开辟空间  
        int **p = new int*[m]; //开辟行  
        for (int i = 0; i < m; i++)
            p[i] = new int[n]; //开辟列  
    
        cout << "input data: ";
        for (i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                cin >> p[i][j];
    
        cout << "output: " << endl;
        for (i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
                cout <<  p[i][j]<<" ";
            cout << endl;
        }
    
        //释放开辟的资源  
        for (i = 0; i < m; i++)
            delete[] p[i];
        delete[] p;
    
    }
    复制代码

    注:另一种方法: 

    row:行

    col:列

    unsigned int **ppPathes;

    *ppPathes = (unsigned int *)calloc(row * col, sizeof(unsigned int));

    使用malloc:

    *ppPathes = (unsigned int *)malloc(sizeof(unsigned int )*(PathNumTemp) * (pathLenTemp + 1));

    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/11356149.html
Copyright © 2011-2022 走看看