double **mat;
int i,j;
mat=new double *[a];
for(i=0;i<a;i++)
{
mat[i]=new double [b];
}
return(mat);
我写了这段代码来分配内存。我面临着糟糕的内存分配错误。在我的代码中,此特定函数被调用超过10000次。我想在分配内存时使用auto_ptr。请帮我解决这个问题。
答案 0 :(得分:2)
Auto_ptr不做数组。
使用典型的new[]
/ delete[]
用例, std::unique_ptr将使用自定义删除 ,但这样做的方式更为简单:
std::vector<std::vector<double>> mat(a,std::vector<double>(b))
稍微复杂一点,但由于spatial locality而使用1维矢量要快得多。
std::vector<double> mat(a*b)
并使用
手动进行尺寸标注mat[row*b+column]