AddressBook问题,调用IADDRBOOK_EnumRecInit,内存泄漏
大家好,我在Brew程序中通过创建实例,初始化,释放的顺序,访问地址簿。if (ISHELL_CreateInstance(pAT->pIShell, AEECLSID_ADDRBOOK, (void**)&pAT->pIContatAddrBook) != SUCCESS)
{
return FALSE;
}
if(IADDRBOOK_EnumRecInit(pAT->pIContatAddrBook, AEE_ADDR_CAT_NONE, AEE_ADDRFIELD_NONE, NULL, 0) != AEE_SUCCESS)
{
return FALSE;
}
IADDRBOOK_Release(pAT->pIContatAddrBook);
pAT->pIContatAddrBook = NULL;
然后在Brew应用退出后,ISHELL_CloseApplet(pMe->pIShell, FALSE);
发生了内存泄漏。
BPOINT Type 1, Node 0x06A4223C addressb *OEMOS.c 738 3 1 0 9072
12/01/09 14:47:04.547441 ------ App Heap Info ------ *AEEHeap.c 1265 3 1 0 9073
12/01/09 14:47:04.547716 480 - addressbook (L) *AEEHeap.c
这个480就是易做图存大小,然后我地址簿中有120条记录
每条估计占4字节 ,120 × 4 =480
大家可以真机调试下,有什么解决方案吗?是Brew SDK的BUG吗?
谢谢大家,还望解答。。。。 --------------------编程问答-------------------- if(IADDRBOOK_EnumRecInit(pAT->pIContatAddrBook, AEE_ADDR_CAT_NONE, AEE_ADDRFIELD_NONE, NULL, 0) != AEE_SUCCESS)
{
return FALSE;
}
调试下是不是在这里退出了 --------------------编程问答-------------------- 没有,真机在Brew Logger中调试的时候是过了这句的。 --------------------编程问答-------------------- IADDRBOOK 这个API是需要OEM做portting的,如果OEM的代码有问题,在IADDRBOOK_Release(pAT->pIContatAddrBook)的时候,没有把数据内存释放掉,那么,必定会引起内存泄露了。 --------------------编程问答-------------------- 看一下OEM的相应头文件,有没有特殊的要求 --------------------编程问答-------------------- 那就是说IADDRBOOK是必须和OEM配合的吧。
还有,我在使用IADDRBOOK_CreateRec的时候,成功创建的数据,在手机自带的电话簿中编辑后,不能保存,报保存失败。这个也是和OEM有关是吧。 --------------------编程问答-------------------- 直接去检查下你们的OEM_Addrbook.c的文件,看看RELEASE函数有没有问题 --------------------编程问答--------------------
是的,注意相关的头文件
补充:移动开发 , Brew