【发布时间】:2021-10-06 00:54:15
【问题描述】:
以下代码 sn-p(see on godbolt) 表明大分配器不会增加 STL 容器的内存占用,但大比较器会。为什么会这样?
// compiled with x86-64 gcc 10.3, -std=c++17
#include <functional>
#include <iostream>
#include <memory>
#include <set>
struct MyLess : public std::less<int>
{
char dummy[1024];
};
struct MyAllocator : public std::allocator<int>
{
char dummy[1024];
};
int main()
{
std::cout << sizeof(std::set<int, MyLess>) << std::endl; // prints 1064
std::cout << sizeof(std::set<int, std::less<int>, MyAllocator>) << std::endl; // prints 48
return 0;
}
【问题讨论】: