0
    void  update(int s) {
 68     double *ungfi = new double[arraysisasazei];
 69     double *vnsasai = new double[arraysizasaei];
 70     deriv(dvsasi,vnsasai );
 71     deriv(dusaasi,ungfi );

以下代码是我出现的错误,感谢 kerrek SB 的回复

 ==745== 800,000 bytes in 1,000 blocks are definitely lost in loss record 1 of 2
4

1 回答 1

0

据推测,您忘记在从函数返回之前删除数组。由于很难做到这一点(如果抛出异常),请使用RAII来管理数组:

std::vector<double> uni(arraysizei);
std::vector<double> vni(arraysizei);

uni.data()并根据需要访问原始数组vni.data()

如果您出于某种原因真的想自己处理指针,请记住删除delete []以匹配new []. 记住在每条可能的返回路径上都这样做;即使那样,如果有任何东西引发异常,您也会有泄漏。

于 2013-09-30T18:26:43.790 回答