Valgrind的泄漏预防

时间:2013-09-30 18:21:22

标签: c++ visual-c++ valgrind

    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

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您因某些原因真的想要自己玩弄指针,请记得使用delete []删除以匹配new []。记得在每个可能的返回路径上执行此操作;即便如此,如果有任何异常,你也会有泄漏。