首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GCC如何实现C++标准分配器?

GCC如何实现C++标准分配器?
EN

Stack Overflow用户
提问于 2018-01-30 17:02:26
回答 2查看 1.1K关注 0票数 1

我不熟悉追踪源代码,找出C++标准分配器的GCC STL实现(C++),我也找不到任何简短的解释、文档和技术报告来描述GCC选择的内存模型。

我猜GCC使用了几个固定大小的桶来存储相同大小的小对象(以字节为单位),并为特定大小的大对象分配大内存空间。

GCC为C++标准分配器选择的具体内存模型是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-30 17:14:13

我找不到任何简短的解释、文档和技术报告来描述GCC选择的内存模型。

读代码。它是开源的,它作为纯文本包含在编译器中。

如果您不确定标准标头在哪里,可以做以下两件事中的一件:

  1. 了解如何询问编译器就像这个问题一样
  2. 欺骗编译器告诉你。通过尝试做一些std::allocator不能做的事 #包括int (){ std::allocator a;a.allocate(&a);返回0;} 给出 错误..。包含于\ /usr/include/x86_64-linux-gnu/c++/6/bits/c++allocator.h:33:0,的文件中

当您发现std::allocator只是使用堆进行所有这些决策时,您可以查看glibc源 for malloc

票数 3
EN

Stack Overflow用户

发布于 2018-01-30 17:12:17

std::allocator只使用operator newoperator delete,而这些只是包装mallocfree

因此,该实现被委托给C库,不管使用中的是哪种。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48526796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档