如何调试一个模块的内存

将内存分配函数独立出来;
在头文件中,创建接口函数,

//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;
	}
}
posted @ 2021-09-08 17:03  海林的菜园子  阅读(46)  评论(0编辑  收藏  举报