如何让C ++使用我自己的自定义malloc?

时间:2015-01-27 20:01:52

标签: c++ visual-studio-2008 malloc

我遇到了内存泄漏问题,并希望制作我自己的自定义malloc / new / delete / free等功能。我想这样做,以便每次调用其中一个时都可以打印堆栈跟踪,这与Visual Studio的堆调试工具(类似于电子围栏)相结合,可用于调试内存泄漏。

那么,有没有办法告诉C ++使用我自己的malloc?我正在使用Visual Studio 2008。

谢谢。

编辑:就此而言,如果执行malloc会很好,但是当它执行时它会触发一个自定义函数来运行。有点想知道_malloc_dbg是否可以做类似的事情...看起来不像它但是会很好。

3 个答案:

答案 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',这将允许你设置单独的钩子来调用函数,无论是调用分配,重新分配还是自由。这正是我想要的。

更多信息:https://msdn.microsoft.com/en-us/library/820k4tb8.aspx