主要观点:Valgrind 是用于调试和分析程序的有用工具,可检测内存泄漏和无效内存访问,其框架支持自定义分配器。
关键信息:
- 可通过包含
valgrind/valgrind.h
和valgrind/memcheck.h
头文件使用 Valgrind。 - 需用
VALGRIND_CREATE_MEMPOOL
注册锚地址,用VALGRIND_DESTROY_MEMPOOL
销毁池。 VALGRIND_MAKE_MEM_NOACCESS
用于使内存区域不可访问,VALGRIND_MAKE_MEM_DEFINED
用于读写不可访问区域。- 分配和释放内存块时分别使用
VALGRIND_MEMPOOL_ALLOC
和VALGRIND_MEMPOOL_FREE
。
重要细节: - 在
pool_new
中对相关内存区域设置为不可访问后创建内存池。 - 在
pool_expand
中对扩展部分和相关结构设置为不可访问。 - 在
pool_close
中遍历并设置相关结构为可访问后销毁内存池。 - 在
pool_alloc
和pool_free
中对相关对象设置为可访问后进行内存操作。最后强调虽使代码可读性降低,但添加 Valgrind 支持是值得的,并欢迎贡献和改进。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。