我正在尝试分配内存por double * r [3]
每当我尝试这种方式时,它都会失败:
#include <cstdio>
int main(){
int N = 10;
double *r[3] = new double[N][3];
delete r;
return 0;
}
正确的方法是什么?
答案 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;