1

メモリリークに問題があります。この単純なプログラムでは:

#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)

メモリを適切に解放する方法を誰か教えてもらえますか? アドバイスありがとうございます。

4

2 に答える 2

1

@ user4815162342 はおそらく正しいでしょう。C++ OpenCv cv::Matただし、メモリ管理が自動化されているnew に移行することをお勧めします。

于 2013-04-01T09:22:22.590 に答える
-1

私はこの漏れを何度も見てきました。送信した内容の上にある詳細なエラーを確認してください。それはおそらくpixman libです。

于 2015-02-19T07:10:37.773 に答える