分配内存

Assigning memory

本文关键字:内存 分配      更新时间:2023-10-16

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

每当我尝试这种方式时,它总是失败:

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

正确的方法是什么?

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

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;

使用

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

delete [] r;

只需使用std::array

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