gpt4 book ai didi

c - 包装 malloc 但仅适用于某些输入文件(对象和库)

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:01 24 4
gpt4 key购买 nike

我需要包装对 malloc 的调用,以便从我自己的池中提供内存。但仅适用于我自己的目标文件和一些外部库。其他库应该可以访问真正的 malloc。我使用静态链接并且只链接到静态库(.a 文件)。

我使用 --wrap=malloc 选项来“拦截”对 malloc 的调用,但它使来自所有输入文件的所有代码都使用此 malloc (__wrap_malloc)。

理想的解决方案是我可以使用 --wrap 链接器选项但仅将其应用于某些输入文件。但也欢迎其他解决方案。

如果需要说明问题,我可以提供虚拟示例代码(不是那么小)。

有什么想法吗?

谢谢

最佳答案

尝试分两步链接。

第一阶段:ld -r -o libwrapped.a --wrap=malloc myobj1.o myobj2.o -lsomelib

第二阶段:ld -o final -lwrapped -lsomeotherlib

-r 选项使第一个文件(wrapped)可重定位,通常称为部分链接。基本上,您创建了一个包含您想要包装的所有对象的库,然后将其与您不想包装到最终对象中的对象链接起来。

关于c - 包装 malloc 但仅适用于某些输入文件(对象和库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com