gpt4 book ai didi

c++ - GCC 是如何实现 C++ 标准分配器的?

转载 作者:行者123 更新时间:2023-11-30 01:38:09 25 4
gpt4 key购买 nike

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

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

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

最佳答案

I cannot find any brief explanation, documentation and technical reports that describe what the memory model that GCC selects

阅读代码。它是开源的,并且以纯文本形式包含在编译器中。

如果您不确定您的标准 header 在哪里,您可以执行以下两项操作之一:

  1. 了解如何询问编译器as in this question

  2. 欺骗编译器告诉你,例如。通过尝试做 std::allocator 做不到的事情

    #include <memory>

    int main() {
    std::allocator<int> a;
    a.allocate(&a);
    return 0;
    }

    给予

    error ... 
    In file included from \
    /usr/include/x86_64-linux-gnu/c++/6/bits/c++allocator.h:33:0,

当您发现 std::allocator 只是使用堆来做出所有这些决定时,您可以查看 glibc source对于 malloc

关于c++ - GCC 是如何实现 C++ 标准分配器的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48526796/

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