OpenCV でメモリを解放する際に問題が発生しました。返されたポインタのメモリを解放するにはどうすればよいですか?
これが私のコードです:
これは、関数間引きを呼び出す関数です。
int preprocessing_and_classification() {
/// Section 2D - Perform morphological processing
CvMat* image1_edge_morpho = thinning(image1_edge);
.......
.......
...........
//////////////// release the memory ///////////////
cvReleaseImage(&img);
cvReleaseMat(&image1);
cvReleaseMat(&image1_edge);
cvReleaseMat(&image1_edge_morpho);
cvReleaseImage(&imgg);
cvReleaseImage(&imggT);
cvReleaseMemStorage(&g_storage);
cvReleaseMat(&features);
cvReleaseMat(&labels_obtained);
/////////////////////////////////////////////////////
return num_bacilli;
}
以下に示す関数 thinning は Pointer Merode を返します。
CvMat* thinning(CvMat* M){
/*
Input parameters
CvMat* M = Pointer to the matrix on which morphological processing needs to be done.
Output parameters
CvMat* Merode = Pointer to morphological processed matrix.
*/
CvMat* Merode = cvCreateMat(h,w,CV_8UC1);
.
.
.
.
.
.
///// Releasing the images, matrices and structuring elements to free memroy.
// Matrix Merode is not released as it is the output of this function file
cvReleaseStructuringElement(&B);
cvReleaseMat( &Mopen );
cvReleaseMat( &temp );
cvReleaseMat( &Mclose );
cvReleaseMat( &temp1 );
cvReleaseMat( &MM );
cvReleaseImage( &img1 );
cvReleaseMemStorage(&g_storage);
cvReleaseMat( &Mimg1 );
cvReleaseMat( &Mimg2 );
return Merode;
}
どうすればメロードを削除できますか?