Memory leaks 特征共轭梯度中的内存泄漏?

Memory leaks 特征共轭梯度中的内存泄漏?,memory-leaks,eigen,eigen3,Memory Leaks,Eigen,Eigen3,我花了最后一天的时间在代码中查找内存泄漏。对于循环中的每个帧,我可以在任务管理器中看到大约200 Mb的内存丢失。最终,程序当然崩溃了 伪代码如下所示: for frame = 0:NBROFFRAMES cv::Mat = getImage(frame); cout<<"Before optimization"<<endl; getchar(); optFunction.optimizeColor(img); cout

我花了最后一天的时间在代码中查找内存泄漏。对于循环中的每个帧,我可以在任务管理器中看到大约200 Mb的内存丢失。最终,程序当然崩溃了

伪代码如下所示:

 for frame = 0:NBROFFRAMES
     cv::Mat = getImage(frame);
     cout<<"Before optimization"<<endl;
     getchar();
     optFunction.optimizeColor(img);
     cout<<"After optimization"<<endl;
     getchar();
     Do other things
 end
分配内存的唯一方法是在创建实例
optFunction
时定义一些矩阵的大小,并为条目保留空间。这当然只做了一次,而且我已经检查了好几次。我看到的唯一解释是,
ConjugateGradient
正在消耗内存

下面是我要调用的代码
ConjugateGradient

function optmize()
Eigen::ConjugateGradient<Eigen::SparseMatrix<float>, Eigen::Lower | Eigen::Upper> cg;
cg.setTolerance(0.001);
cg.setMaxIterations(200);
cg.analyzePattern(A_tot);
cg.factorize(A_tot);
Eigen::VectorXf opt = cg.solveWithGuess(b_tot, rho_current);
end
我使用的是
ubuntu16.04
g++5.4.0


编辑:正如Avi Ginsburg所指出的,我使用的是Eigen的测试版。通过升级到3.3.2,它可以在没有内存泄漏的情况下工作。

这是一个测试版。我会尝试使用当前的Egen(3.3.2)并再试一次。好的,我刚刚使用了sudo apt get install,为什么会有测试版?那是Ubuntu 16.04发布时的版本。好的,谢谢。我会尝试另一个版本。那是一个测试版。我会尝试使用当前的Egen(3.3.2)并再试一次。好的,我刚刚使用了sudo apt get install,为什么会有测试版?那是Ubuntu 16.04发布时的版本。好的,谢谢。我会尝试另一个版本。
function optmize()
Eigen::ConjugateGradient<Eigen::SparseMatrix<float>, Eigen::Lower | Eigen::Upper> cg;
cg.setTolerance(0.001);
cg.setMaxIterations(200);
cg.analyzePattern(A_tot);
cg.factorize(A_tot);
Eigen::VectorXf opt = cg.solveWithGuess(b_tot, rho_current);
end
#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 2
#define EIGEN_MINOR_VERSION 92