分配内存

时间:2016-03-31 16:04:48

标签: c++ memory-management

我正在尝试分配内存por double * r [3]

每当我尝试这种方式时,它都会失败:

#include <cstdio>
int main(){
    int N = 10;
    double *r[3] = new double[N][3];
    delete r;
    return 0;
}

正确的方法是什么?

3 个答案:

答案 0 :(得分:1)

您需要为指针指向的每个单元格分配内存块。

double **r = new double* [N];

for(int i = 0; i < N; i++)
{
    *(r + i) = new double[3];

    delete [] *(r + i);
}

delete [] r;

最好使用std::vector

std::vector<std::vector<double>> r;

答案 1 :(得分:0)

只需使用std::array

即可
#include <array>

int main()
{
    int N = 10;
    typedef std::array<double,3> darray;
    darray *r = new darray[N];
    delete []r;
    return 0;
}

答案 2 :(得分:0)

使用

double (*r)[3] = new double[N][3];

delete [] r;