潜心修行bean.blog.chinaunix.net
Bean_lee
个人微薄: weibo.com/manuscola
全部博文(146)
2016年(3)
2015年(2)
2014年(5)
2013年(42)
2012年(31)
2011年(58)
2010年(5)
liangwei
jiaogesh
lraine
kangkang
王帅阳
眼睛去旅
wzy719
butterfl
冲线
shijiang
dailyluc
dyli2000
luoaishu
luotuo28
piyazi
FishAndC
routee
turbo123
分类: C/C++
2012-04-03 13:13:08
上一篇:mtrace 跟踪内存泄漏
下一篇:Linux下sqlite 编程
Heartwork2012-04-04 22:20:43
buddy system一般在分配大小不定的内存块时使用。 调试版本中加入这文件名、代码行数等调试信息,release版本去掉就好了。 因为之前的工作就是开发和维护底层的中间件代码库,内存这块的主要问题就是double free和memory leak,所以有点心得,呵呵。
Bean_lee2012-04-04 22:15:18
Heartwork2012-04-04 22:10:41
malloc内部实现也是一个buddy system,应该可以通过内存块的头部发现内存是否已经分配,从而发现double free的错误。如果要是能够帮助定位第一次free的位置就更好了,可以在内存block的头部记录free时的文件名和代码行数(__FILE__和__LINE__),这样可以在调试版本中帮助发现内存分配的逻辑错误。
Bean_lee2012-04-03 14:14:35
呵呵,你说的valgrind,久仰大名,还没用过,呵呵,好久不写了开开张。 假期主要任务还是研究sqlite。
GFree_Wind2012-04-03 14:12:00
我也看了这本书了。但是感觉关于内存的检查,还是valgrind更方便。
登录 注册