opencv 与mfc一起使用时,在退出程序时,会出现 、 6A 70 63 00 等内存泄漏。
原因
只要程序中使用Mat 、Iplimage 、 CvMat 这几个类型,在退出时都会有内存泄漏。 可以单独创建一个程序,只定义这几个变量,发现确实是有。
主要解决办法:
https://blog.csdn.net/libaineu2004/article/details/104399645?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
可以再对opencv的函数进行二次封装成dll,而且dll中不能含有这几个类型的参数,这样的话是可以的。可以用uchar来代替mat
将”配置属性>常规>MFC的使用“ 由“在共享 DLL 中使用 MFC”修改为“在静态库中使用 MFC”。 这个方法修改后本程序中仍然有内存泄漏,不好用。
{302} normal block at 0x01353308, 52 bytes long.
Data: < J > 00 AF 4A 01 00 00 00 00 00 00 00 00 00 00 00 00
{298} normal block at 0x014AAA48, 47 bytes long.
Data: <JPEG-2000 Code S> 4A 50 45 47 2D 32 30 30 30 20 43 6F 64 65 20 53
{297} normal block at 0x014A7D38, 4 bytes long.
Data: <jpc > 6A 70 63 00
{296} normal block at 0x014A7DF8, 4 bytes long.
Data: <jpc > 6A 70 63 00
{295} normal block at 0x014AAB20, 51 bytes long.
Data: <JPEG-2000 JP2 Fi> 4A 50 45 47 2D 32 30 30 30 20 4A 50 32 20 46 69
{294} normal block at 0x014A7C18, 4 bytes long.
Data: <jp2 > 6A 70 32 00
{293} normal block at 0x014A7B88, 4 bytes long.
Data: <jp2 > 6A 70 32 00
{292} normal block at 0x014AD428, 56 bytes long.
Data: < " { > B8 22 17 7B 00 00 00 00 00 00 00 00 CD CD CD CD
{291} normal block at 0x01352610, 908 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 80 02 00 00
{290} normal block at 0x014AD490, 56 bytes long.