IJL 是据我所知最好用的 JPG 编解码库,速度一流、操作简单。
但是我发现它的版本1.5却有资源泄露问题,较早的1.0反而没有,遍寻网上资料,一直没有找到相关资料,我想也许是我的使用有问题,特抛一砖,盼引得玉来:
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 指点。
posted on 2005-09-14 00:43
dot.cheng 阅读(423)
评论(0) 编辑 收藏 引用 所属分类:
Win32技术