我有内存泄漏的问题。在这个简单的程序中:
#include <stdlib.h>
#include <stdio.h>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
int main() {
CvMat *src;
src = cvLoadImageM("p1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
cvSaveImage("p2.bmp", src, 0);
cvReleaseMat(&src);
return 0;
}
根据valgrind,有7个泄漏:
==10478== HEAP SUMMARY:
==10478== in use at exit: 10,464 bytes in 7 blocks
==10478== total heap usage: 154 allocs, 147 frees, 2,908,450 bytes allocated
==10478==
==10478== LEAK SUMMARY:
==10478== definitely lost: 0 bytes in 0 blocks
==10478== indirectly lost: 0 bytes in 0 blocks
==10478== possibly lost: 0 bytes in 0 blocks
==10478== still reachable: 10,464 bytes in 7 blocks
==10478== suppressed: 0 bytes in 0 blocks
==10478== Rerun with --leak-check=full to see details of leaked memory
==10478==
==10478== For counts of detected and suppressed errors, rerun with: -v
==10478== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
谁能告诉我如何正确地释放内存?谢谢你的建议。
@user4815162342可能是正确的。尽管我建议您迁移到新的C++
, OpenCv
, cv::Mat
,通过它内存管理是自动的。
我已经见过很多次了。检查你发送的上面的详细错误。可能是pixman库