gpt4 book ai didi

c++ - 链接 Google TCMalloc 库的最安全方式

转载 作者:行者123 更新时间:2023-11-28 05:30:45 25 4
gpt4 key购买 nike

经过几天的测试,我发现运行时补丁机制 patch_functions.cc在生产环境中使用是不安全的。
除了 HeapAlloc() 和 HeapFree() 之外,它似乎在 VS2010 项目中运行良好,但由于一些 Unresolved 问题而无法在 VS2015 项目中使用 Open Issues .Windows 自述文件描述了使用 tcmalloc 的替代方法:


上述所有方法的替代方法是静态链接您的应用程序用 libc,然后用 tcmalloc 替换它的 malloc。这让你正常构建和链接您的程序; tcmalloc 支持进入后处理步骤。这个比上面的靠谱技术(这取决于运行时修补,这本质上是脆弱的),尽管需要更多的工作来建立。有关详细信息,请参阅 https://groups.google.com/group/google-perftools/browse_thread/thread/41cd3710af85e57b


不幸的是,所提供的lik是无法访问的,似乎google已经关闭了该组。

有人可以向我解释如何执行此操作吗?

最佳答案

我假设它建议编写您自己的 malloc,它使用 tcmalloc

因此您必须定义并链接您自己的(通过创建或使用 .c 又名翻译单元)并编写类似这样的内容

#ifdef __cplusplus
extern "C" {
#endif

#include <stdlib.h>

void* malloc(size_t size) {
return tcmalloc(size);
}

//Also define a free if memory which has been allocated by tcmalloc
//needs to be freed by a special function
// Like
/*
void free(void* ptr) {
if (ptr) {
tcfree(ptr);
}
}
*/

#ifdef __cplusplus
}
#endif

问题是:根据您的构建系统或链接器,它可能会出现双符号或引用问题。然后你必须以某种方式排除 libcs​​ malloc,或者自己更改 libc。

关于c++ - 链接 Google TCMalloc 库的最安全方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39577554/

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