当前位置:编程学习 > wap >>

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函数有没有问题 --------------------编程问答--------------------
引用 5 楼 airfei10 的回复:
那就是说IADDRBOOK是必须和OEM配合的吧。

 还有,我在使用IADDRBOOK_CreateRec的时候,成功创建的数据,在手机自带的电话簿中编辑后,不能保存,报保存失败。这个也是和OEM有关是吧。


是的,注意相关的头文件
补充:移动开发 ,  Brew
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,