调用 ISMS_ReceiveMsg 后导致内存泄漏

allen1986 2010-07-08 03:05:40

...全文
1704 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen1986 2010-07-14
  • 打赏
  • 举报
回复
可惜俺是做应用的。并非OEM
malu_1982 2010-07-14
  • 打赏
  • 举报
回复
LZ使用的是否是 6085 平台。
6085平台的 ISMS 接口有缺陷,确实导致内存泄漏。 可以将AEESMSEXlib库 改成 1110平台的文件编译进去即可
allen1986 2010-07-13
  • 打赏
  • 举报
回复
6楼的释放方法我试过。 notify里面没做多少处理:

case EVT_NOTIFY:
{
AEENotify* pNotify = (AEENotify*)dwParam;
RecvMessage(pMe, pNotify);
pNotify->st = NSTAT_STOP;
}
return(TRUE);
candyrong 2010-07-12
  • 打赏
  • 举报
回复
那就是很有可能在你的NOTIFY语句里有泄漏,像6楼说的也有可能,不过LZ说了把NOtify处理注释掉就没有泄露,说明LZ应该做了接口释放的动作吧。[Quote=引用 5 楼 allen1986 的回复:]
NOtify里面不做任何处理的话,就不会有泄露了。
[/Quote]
instantboy 2010-07-09
  • 打赏
  • 举报
回复
ISMS_ReceiveMsg的原型是
int ISMS_ReceiveMsg(ISMS *po, uint32 uMsgId, ISMSMsg **ppMsg)

你的程序应该是这样写的吧
ISMSMsg *pSMS = NULL;

iRet=ISMS_ReceiveMsg(po, uMsgId, &pMsg);

其实这个函数内部会给你分配内存来构建ISMSMsg的,所以,这就是为什么你调用了之后就会有内存泄露,你需要
if (pMsg!=NULL)
{
ISMSMsg_Release(pMsg);
pMsg=NULL;
}
allen1986 2010-07-08
  • 打赏
  • 举报
回复
NOtify里面不做任何处理的话,就不会有泄露了。
candyrong 2010-07-08
  • 打赏
  • 举报
回复
你调这个ISMS_ReceiveMs接口后,比不调这个接口多出的地方也注释掉看还会不会泄露,把Notify的也注释了试试
allen1986 2010-07-08
  • 打赏
  • 举报
回复
但是这段代码,我只需要把调用ISMS_ReceiveMs的地方屏蔽掉,其他的不做修改。就不会发生内存泄漏啊。还有就是有新短信来的时候,我在notify里,就执行了RecvMessage这一个函数。
candyrong 2010-07-08
  • 打赏
  • 举报
回复
刚看了一下这个函数,里面申请的内存应该都释放了,会不会是你自己写的没释放掉
allen1986 2010-07-08
  • 打赏
  • 举报
回复
如果不调用 ISMS_ReceiveMs(),就不会发生泄漏。这里是什么原因呢。

2,853

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧