我想在链接时替换默认的malloc以使用自定义malloc.但是当我尝试在我的程序中重新定义malloc时,我收到此错误:
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in test.lib(test.obj)
这适用于任何Unix,它适用于具有大多数功能的Windows,但不适用于malloc.我怎样才能做到这一点?与malloc不同的是,它不允许覆盖它?
我知道我可以用我的自定义malloc替换每次对malloc的调用,或者使用宏来执行此操作,但我宁愿不修改每个第三方库.
这里有多么难以讨论:
http://benjamin.smedbergs.us/blog/2008-01-10/patching-the-windows-crt/
显然,你需要修补CRT
编辑:实际上,一名MS员工在讨论中提供了该技术.您需要将malloc移动到lib,然后在CRT之前将其链接
"他还提到如果你在CRT 之前将你的malloc链接为lib (即确保打开'忽略默认库'并明确地包含CRT),你就会得到你想要的东西,并且可以毫无问题地重新发布这个库. ".