이 코드는 마지막 줄까지 잘 동작합니다. 그것은 디스크에 올바른 이미지를 저장하지만 함수 - 힙 손상에서 벗어난 후 "메모리 누수"를 표시합니다. 매트가 명시 적으로 발표 될 필요가 없다는 것을 읽었습니다. 내 경우에는 해제 및 w/o 해제 모두 충돌합니다. 도와주세요. 난 단지 당신에게 지원을 줄 수있는이 작은 정보가 있지만 실제 솔루션을힙 손상 오류; cv :: Mat opencv를 해제 할 수 없습니다.
void CannyEdgeDetectionFilter::applyFilter(Mat& mat, Mat& mixedBandsMat)
{
//Mat mixedBandsMat;
vector<Mat> bandWiseImages;
split(mat, bandWiseImages);
//! Evaluate numChannels to be filtered in the input image
int numChannels = mat.channels();
int type = mat.type();
//! Multiplied by 8 to get bits from Bytes
int singleChannelDepth = 8*mat.elemSize1();
for (int i = 0; i < numChannels; i++)
{
Canny(bandWiseImages[i], bandWiseImages[i], m_LowerThreshold,
m_UpperThreshold, m_Kernel.rows);
}
//! Creating filteredImgMat in order to set DataValues
mixedBandsMat.create(mat.rows, mat.cols, mat.type());
//! Unifying the channels back to the output image
merge(bandWiseImages, mixedBandsMat);
#if 1
//Release bandWiseImages Mat memory
int bandWiseVecSize = bandWiseImages.size();
for(int i = 0; i < bandWiseVecSize; i++)
bandWiseImages[i].release();
bandWiseImages.clear();
//fromTo.clear();
#endif
imwrite("D:\\testAfterCannyEdgeDetetionFilter.jpg", mixedBandsMat);
mixedBandsMat.release();
}
어떻게 힙 손상을 감지합니까, 어떤 프로그램을 사용하고 있습니까? 그냥 궁금해 ... – penelope
메모리 누수가 표시되거나 충돌이 발생합니까? – juanchopanza
visual studio 2008에서 작업 중입니다. 코드가 종료되면 함수가 종료됩니다. – user1412066