有没有办法在Windows上的链接时重新定义malloc?

Jaz*_*azz 9 c windows

我想在链接时替换默认的malloc以使用自定义malloc.但是当我尝试在我的程序中重新定义malloc时,我收到此错误:

MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in test.lib(test.obj)
Run Code Online (Sandbox Code Playgroud)

这适用于任何Unix,它适用于具有大多数功能的Windows,但不适用于malloc.我怎样才能做到这一点?与malloc不同的是,它不允许覆盖它?

我知道我可以用我的自定义malloc替换每次对malloc的调用,或者使用宏来执行此操作,但我宁愿不修改每个第三方库.

Lou*_*nco 16

这里有多么难以讨论:

http://benjamin.smedbergs.us/blog/2008-01-10/patching-the-windows-crt/

显然,你需要修补CRT

编辑:实际上,一名MS员工在讨论中提供了该技术.您需要将malloc移动到lib,然后在CRT之前将其链接

"他还提到如果你在CRT 之前将你的malloc链接为lib (即确保打开'忽略默认库'并明确地包含CRT),你就会得到你想要的东西,并且可以毫无问题地重新发布这个库. ".