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 指点。