如何调试一个模块的内存
将内存分配函数独立出来;
在头文件中,创建接口函数,
//module.h
typedef struct
{
void *(*malloc_fn) (size_t sz);
void (*free_fn) (void *ptr);
}mem_hooks_t;
extern void module_init_mem_hooks(mem_hooks_t *hooks);
若别人不使用时,函数会默认使用默认值;
并且能在执行过程中,随时恢复到默认的函数值;
static void *(*module_malloc)(size_t sz) = malloc;
static void (*module_free)(void *ptr) = free;
void module_init_mem_hooks(mem_hooks_t *hooks)
{
/*恢复成默认函数*/
if (hooks == NULL)
{
module_malloc = malloc;
moudle_free = free;
}
else
{
module_malloc = (hooks->malloc_fn == NULL)?hooks->malloc:malloc;
module_free = (hooks->free_fn == NULL)?hooks->free_fn:free;
}
}