我遇到了内存泄漏问题,并希望制作我自己的自定义malloc / new / delete / free等功能。我想这样做,以便每次调用其中一个时都可以打印堆栈跟踪,这与Visual Studio的堆调试工具(类似于电子围栏)相结合,可用于调试内存泄漏。
那么,有没有办法告诉C ++使用我自己的malloc?我正在使用Visual Studio 2008。
谢谢。
编辑:就此而言,如果执行malloc会很好,但是当它执行时它会触发一个自定义函数来运行。有点想知道_malloc_dbg是否可以做类似的事情...看起来不像它但是会很好。
答案 0 :(得分:0)
如果要调用不同的内存分配函数,则应该调用另一个内存分配函数。
如果您想在不更改代码的情况下执行此操作,则可以定义宏。假设你有自己的分配器:
void *my_allocator(size_t size);
然后您可以定义
#define malloc(x) my_allocator(x)
这是针对malloc的。在C ++中,您可以override the new operator
答案 1 :(得分:0)
使用C语言时,请不要致电malloc
。
调用您自己的内存分配函数并删除函数。
答案 2 :(得分:0)
为了回答我自己的问题,事实证明你可以调用'_CrtSetAllocHook',这将允许你设置单独的钩子来调用函数,无论是调用分配,重新分配还是自由。这正是我想要的。