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
答案 0 :(得分:0)
据推测,在从函数返回之前,您忘记删除数组。由于很难做到这一点(如果抛出异常),使用RAII来管理数组:
std::vector<double> uni(arraysizei);
std::vector<double> vni(arraysizei);
并根据需要访问原始数组uni.data()
和vni.data()
。
如果您因某些原因真的想要自己玩弄指针,请记得使用delete []
删除以匹配new []
。记得在每个可能的返回路径上执行此操作;即便如此,如果有任何异常,你也会有泄漏。