IJL 是据我所知最好用的 JPG 编解码库,速度一流、操作简单。 但是一直没有人谈过它的资源泄露问题,我想也许是我的使用有问题, 特抛一砖,盼能引得玉来:
JPEG_CORE_PROPERTIES prop = { NULL };
// 初始化 if (IJL_OK != ijlInit(&prop)) { return FALSE; } // 读参数 prop.JPGBytes = pJPG; prop.JPGSizeBytes = lJPGSize; if (IJL_OK != ijlRead(&prop, IJL_JBUFF_READPARAMS)) { ijlFree(&prop); return FALSE; }
pijlFree(&prop); return NULL;
以上这段代码是从 JPG Buffer 解码到RGB Buffer 的代码 的初始部分,实在看不出有什么地方需要修正,和 IJL 自己 的 DEMO 也没什么差别;可是只要重复调用,就会发现它会 导致内存泄露,虽然很小,在我的机器上,大概每 1000 次 泄露 100K,如果你的程序需要 24*7*365 地运行,就会导致 问题了;
我的解决办法是:动态加载,定时卸载;只要 FreeLibrary, 泄露的内存就会回来,不知道这能否证明是 IJL 内部有泄露? 希望有此经验的 DX 指点。 
|