关于内存泄漏问题!!!!!

qzlyc 2009-12-21 10:53:26
各位大哥大姐,小弟刚接触BREW虽费劲九牛二虎之力把程序搞出来了,但是内存泄露严重,小弟在校期间一直对内存泄漏凝或不解。见名思意,本以为是内存丢失,回来才理解到是内存申请过来没释放,小弟在这跪求大侠们,教教我怎么解决这个问题啊啊。
...全文
1967 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxcnfly 2010-01-18
  • 打赏
  • 举报
回复
结帖呀,大家已经说的这么明白了。
adipreneo 2010-01-18
  • 打赏
  • 举报
回复
如果是你自己写的代码,每次用到动态内存分配的时候,先想好所有可能的程序结束路径和出口。实际编写的时候要确保在所有的结束路径和出口要相应的保证动态分配的内存被释放掉。

一个简单的原则就是,当分配的内存不再被需要的时候,尽快释放掉。
babiq 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xia56108430 的回复:]
晕倒,你确认你项目里面的每一行代码你都看过?

如果没看过,那你是不是就不能开发了

几个开发的项目,突然出问题,要马上解决,
难道你还要所有代码都看一遍,再去解决
[/Quote]
1 我参与的项目里,我确实都看过。
2 如果你对这些代码都不熟悉,又何谈解决问题?不过是制造问题罢了。

因为工作的原因我帮过很多新程序员解决问题。而这些问题归结起来大多是由于他们根本不熟悉自己正在开发东西,导致原有问题暴露或者引入新问题。这些问题往往困扰他们几天甚至几个星期,而我只需要坐在他的电脑前花几个小时的功夫review一下他们的代码就可以解决。
xia56108430 2010-01-14
  • 打赏
  • 举报
回复
问题就是内存泄露
xia56108430 2010-01-14
  • 打赏
  • 举报
回复
晕倒,你确认你项目里面的每一行代码你都看过?

如果没看过,那你是不是就不能开发了

几个开发的项目,突然出问题,要马上解决,
难道你还要所有代码都看一遍,再去解决
wishifef 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 longlao_ 的回复:]
引用 12 楼 xia56108430 的回复:
引用 11 楼 sunyymq 的回复:
模拟器上可以调试的。QXDM也可以!能看出来哪里泄露!


QXDM,怎么看?
DLF ISF?



QXDM打印日志,然后在里面搜索bpoint,要是有bpoint type 1表示内存没释放,bpoint type 3表示内存重复释放
[/Quote]

不好意思,新手,QXDM是什么啊?
babiq 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xia56108430 的回复:]
当然,可是现在很多程序的量是很大的,
而且不是一个人编的,
如果给足够时间去看代码,那肯定能行
问题是有些代码来不及看,就要查原因
解决问题
[/Quote]
不看代码,那你怎么做开发?
xia56108430 2010-01-12
  • 打赏
  • 举报
回复
当然,可是现在很多程序的量是很大的,
而且不是一个人编的,
如果给足够时间去看代码,那肯定能行
问题是有些代码来不及看,就要查原因
解决问题
qzlyc 2010-01-12
  • 打赏
  • 举报
回复
其实你每个环节多很清楚的话,内存泄漏问题很容易查处的。大家还是吧每个环节搞搞清楚吧。这是我的体验。
longlao_ 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xia56108430 的回复:]
引用 11 楼 sunyymq 的回复:
模拟器上可以调试的。QXDM也可以!能看出来哪里泄露!


QXDM,怎么看?
DLF ISF?

[/Quote]

QXDM打印日志,然后在里面搜索bpoint,要是有bpoint type 1表示内存没释放,bpoint type 3表示内存重复释放
wishifef 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wireless_com 的回复:]
引用 9 楼 qzlyc 的回复:
谢谢大家,现在这个问题我撞好了,但是编程不是很规范。要想不泄漏只能一开始的时候用了指针,时刻要想着把它释放掉,就好像借了钱,迟早要还的。

就好像借了钱,迟早要还的,最好早还,有了利息就不爽了。
[/Quote]
这句话太对了,可是有什么方法可以让我们这些新手对这一方面学的快些呢,我现在的程序,很少去释放内存的,主要是不知道哪些该释放,有没有好的建议或者好的资料啊!
xia56108430 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sunyymq 的回复:]
模拟器上可以调试的。QXDM也可以!能看出来哪里泄露!
[/Quote]

QXDM,怎么看?
DLF ISF?
sunyymq 2009-12-25
  • 打赏
  • 举报
回复
模拟器上可以调试的。QXDM也可以!能看出来哪里泄露!
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qzlyc 的回复:]
谢谢大家,现在这个问题我撞好了,但是编程不是很规范。要想不泄漏只能一开始的时候用了指针,时刻要想着把它释放掉,就好像借了钱,迟早要还的。
[/Quote]
就好像借了钱,迟早要还的,最好早还,有了利息就不爽了。
qzlyc 2009-12-23
  • 打赏
  • 举报
回复
谢谢大家,现在这个问题我撞好了,但是编程不是很规范。要想不泄漏只能一开始的时候用了指针,时刻要想着把它释放掉,就好像借了钱,迟早要还的。
  • 打赏
  • 举报
回复
用BREWlogger 看一下log先
zxzyzw 2009-12-22
  • 打赏
  • 举报
回复
用模拟器的时候打开output
然后开启程序后关闭,可以看到大部分没有释放的接口
不过内存接口需要自己规范一下,习惯用完就释放
还有就是在free函数下释放所有接口
freudlv 2009-12-22
  • 打赏
  • 举报
回复
我也遇到这个问题,建议你可以找一些内存管理工具,通过工具,你可以知道哪一句泄露了内存。。
路飞-总裁 2009-12-22
  • 打赏
  • 举报
回复
我觉得Brew开发新手首先解决的问题就是内存管理的问题,内存问题不解决其他的都是不确定的。
zhangwenhai 2009-12-22
  • 打赏
  • 举报
回复
写程序规范,每次动态分配的空间在不用的时候,及时释放掉,
如果是你有了释放的语句,实际中并没释放掉内存空间,这可能是你动态申请的内存指针进行了 加的 计算了,指针指向不是你申请时候的位置。
加载更多回复(3)

2,851

社区成员

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

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