谈谈 IJL 的资源泄露问题

类别:编程语言 点击:0 评论:0 推荐:

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

本文地址:http://com.8s8s.com/it/it25247.htm