开发环境:windows7-64位,VisualStudio2013-C#,halcon12-64位
用C#调用同事用Halcon12写的图片处理程序时,内存一直增加,无法释放。halcon每次处理4张图片,每张图片10M,每次调用之后,内存就增加40M无法释放。在C#中将能释放的图像资源全部释放后,问题仍然得不到解决。
最终查出为halcon12不会自动释放不再使用的内存,需要手动释放。
gen_measure_rectangle2 (param[0]+Index*20, param[1], 0, 300, 20, Width, Height, 'nearest_neighbor', MeasureHandle)
gen_rectangle2 (Rectangle1, param[0]+Index*20, param[1], 0, 200, 20)
measure_pos (image, MeasureHandle, 1, param[2], param[3], param[4], RowEdge, ColumnEdge, Amplitude, Distance)
if(|RowEdge|>0)
row:=[row,RowEdge]
col:=[col,ColumnEdge]
gen_cross_contour_xld (Cross, RowEdge, ColumnEdge, 36, 0.785398)
concat_obj (okregion, Cross, okregion)
endif
close_measure (MeasureHandle)
以上代码为halcon12中的代码,注意划横线的两行,及红色变量。最后调用close_measure方法释放内存。即算子调用结束,一定要配合close_measure方法释放内存,否则容易出现内存泄漏问题。
其他例如:read_ocr_class_mlp 一定要配合clear_ocr_class_mlp
read_ocr_class_mlp ('Document.omc', OCRHandle)
do_ocr_multi_class_mlp (Characters, ImageReduced, OCRHandle, X, Confidence)
clear_ocr_class_mlp(OCRHandle)
以上内存泄漏问题,在halcon16中没有发生,即没有手动释放,也没有发生内存泄漏
2018-11-29