tcmalloc 工程配置
时间: 2023-09-16 12:15:20 浏览: 58
tcmalloc的工程配置有两个主要步骤。首先,需要在程序中添加两项配置:additional dependencies(额外的依赖项)和force symbol references(强制符号引用)。其中,additional dependencies配置是必需的,它告诉编译器需要链接libtcmalloc_minimal.dll这个动态链接库。force symbol references配置的目的是为了在编译优化阶段引入tcmalloc模块内的符号__tcmalloc,告诉编译器tcmalloc是工程所依赖的模块。对于32位的系统,只需要强制引入符号_tcmalloc即可。这样做是因为在实际工程中不会显式调用tcmalloc模块内的函数,导致编译器在编译优化阶段忽略整个tcmalloc模块。但实际上,__tcmalloc在tcmalloc模块中只是一个空函数,不起任何作用。
在Windows平台下,tcmalloc可以通过静态库或者动态库(DLL)的形式嵌入到工程中。具体来说,tcmalloc通过无缝地拦截Windows原生的内存管理接口来实现。Google的tcmalloc组件使用第二种方式,即通过修改原有目标函数的前kRequiredTargetPatchBytes(5)字节,将程序强制跳转到tcmalloc自己的内存管理函数。这样,tcmalloc就能够在不改变工程原有代码的前提下无缝地拦截内存管理函数。此外,tcmalloc还考虑了其他因素,以确保正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [深入了解tcmalloc(一):windows环境下无缝拦截技术初探](https://blog.csdn.net/hk78787878/article/details/104017679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]