引用 3 楼 sleeping_dx 的回复:
每一个接口都继承自IBase接口, IBase接口为每一个继承它的接口维护一个引用计数器, 也就是说, 真正接口实例对象只有一块内存, 而要加载多张资源, 只能先释放前边的实例, 然后再加载后边的资源, 否则后边的资源加载失败!!!!!
请问倘若我要使用上面的方法加载两张IImage图片, 钱一张还不能释放 如何办到呢
楼主您的p1和p2已经是2个独立的对象了,计数器对单个的对象才有意义
俺对该问题的猜测:
1.楼主可以确认一下那2个图片的大小,是不是你图片太大,设备上内存太小?
2.IImage对象的个数好象没有限制,但是IFileMgr对象的个数是一定的,ISHELL_LoadImage会创建IFileMgr,假如你以前一直ISHELL_CreateInstance(AEECLSID_FILEMGR)而没有IFILEMGR_Release,也会造成失败
楼主可以这样分析,
<p1 = ISHELL_LoadImage 为什么没有判空呢?异常分支没处理>
先看看 p1,p2为空不,假如不为空,
可以IIMAGE_GetInfo,看看p1,p2的属性