自动_ptr实现

时间:2015-09-27 06:45:43

标签: c++ auto-ptr

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。请帮我解决这个问题。

1 个答案:

答案 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]