在V2.0.0版本中,我支持了对海康相机数据格式转换的功能,但经大家反馈,当连接相机并开启取流之后,会内存暴涨直到内存占满的问题(这其实就是内存泄露)。
经定位,是在取流时有内存malloc,但却没有free,这就是典型的内存泄露的情况。
具体泄露代码位于HikCamera.cpp文件的HikConvert2Mat函数:
//帧数据转换为Mat格式图片并保存
bool HikConvert2Mat(void* handle, MV_FRAME_OUT_INFO_EX* pstImageInfo, unsigned char* pData, cv::Mat& dstImage);
该函数内有一行malloc申请了内存,但却没有释放:
pConvertData = (unsigned char*)malloc(pstImageInfo->nWidth * pstImageInfo->nHeight * nChannelNum);
解决该问题,只需在函数末尾进行free即可。



没有回复内容