加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 04:32:29 所属栏目:Windows 来源:网络整理
导读:我想在链接时替换默认的malloc来使用自定义的malloc.但是当我尝试在我的程序中重新定义malloc时,我得到这个错误: MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in test.lib(test.obj) 这可以在任何Unix上完美工作,它在Windows上具有
我想在链接时替换默认的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之前

“他还提到,如果你将malloc作为一个lib连接到CRT之前(即确保打开’忽略默认的libs’并且明确地包括CRT),你会得到你想要的,并且可以重新分配这个lib,而没有问题“.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读