avatar
求助:面试题# JobHunting - 待字闺中
l*r
1
一个几百个文件的程序有memory leak,如何debug? (前面有人贴出来的面试题,不会
做),
有人说一下怎么做吗?谢谢
avatar
g*l
2
这个东西有很多方法,取决于你自己的系统。
我前一阵就做过这个东西,几千个文件,方法就是就是查malloc, re-alloc,和free,
把这这三个函数从新包装,每次调用这三个函数的时间,能够打印出指针,分配或者释
放的内存的大小,还有相应的文件,行数信息,就是在什么地方调用这三个函数的。
运行程序直到memory耗尽死机,然后查log文件,就是如果一个指针由malloc分配出来的
,那么他就应该有相应的FREE去释放相同大小的memory,对于re-alloc也是一样的。
到最后,就会发现某处的指针是没有被释放的。
当然,到系统memory耗光的时间,有些内存是没有释放的,但是这些没有释放的内存你
可以分析他为什么没有被释放,当然memory leak就可以很容易的被找出来。

【在 l*******r 的大作中提到】
: 一个几百个文件的程序有memory leak,如何debug? (前面有人贴出来的面试题,不会
: 做),
: 有人说一下怎么做吗?谢谢

avatar
y*g
3
直接用vargrind之类的工具吧

来的

【在 g***l 的大作中提到】
: 这个东西有很多方法,取决于你自己的系统。
: 我前一阵就做过这个东西,几千个文件,方法就是就是查malloc, re-alloc,和free,
: 把这这三个函数从新包装,每次调用这三个函数的时间,能够打印出指针,分配或者释
: 放的内存的大小,还有相应的文件,行数信息,就是在什么地方调用这三个函数的。
: 运行程序直到memory耗尽死机,然后查log文件,就是如果一个指针由malloc分配出来的
: ,那么他就应该有相应的FREE去释放相同大小的memory,对于re-alloc也是一样的。
: 到最后,就会发现某处的指针是没有被释放的。
: 当然,到系统memory耗光的时间,有些内存是没有释放的,但是这些没有释放的内存你
: 可以分析他为什么没有被释放,当然memory leak就可以很容易的被找出来。

avatar
g*l
4
不是所有的系统都能用这个工具的。
我们自己的嵌入式系统,很特别的RTOS,只能自己来搞。

【在 y*******g 的大作中提到】
: 直接用vargrind之类的工具吧
:
: 来的

avatar
a*g
5
有几个工具,可以接管申请内存和释放内存,然后就可以随时查看内存情况。
另外,就是要 solid 编程

【在 l*******r 的大作中提到】
: 一个几百个文件的程序有memory leak,如何debug? (前面有人贴出来的面试题,不会
: 做),
: 有人说一下怎么做吗?谢谢

avatar
l*d
7
自己吧malloc,free重写一遍,programming pearl上有介绍

【在 l*******r 的大作中提到】
: 一个几百个文件的程序有memory leak,如何debug? (前面有人贴出来的面试题,不会
: 做),
: 有人说一下怎么做吗?谢谢

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。