当前位置:  开发笔记 > 开发工具 > 正文

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

如何解决《有没有办法在Windows上的链接时重新定义malloc?》经验,为你挑选了1个好方法。

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

MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in test.lib(test.obj)

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

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



1> Lou Franco..:

这里有多么难以讨论:

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

显然,你需要修补CRT

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

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

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有