小编use*_*444的帖子

为什么libc ++的std :: string实现占用了3x内存作为libstdc ++?

考虑以下测试程序:

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::cout << sizeof(std::string("hi")) << " ";
    std::string a[10];
    std::cout << sizeof(a) << " ";
    std::vector<std::string> v(10);
    std::cout << sizeof(v) + sizeof(std::string) * v.capacity() << "\n";
}
Run Code Online (Sandbox Code Playgroud)

输出libstdc++libc++分别是:

8 80 104
24 240 264
Run Code Online (Sandbox Code Playgroud)

如您所见,libc++对于一个简单的程序,需要3倍的内存.实现有何不同会导致这种内存差异?我需要关注,我该如何解决它?

c++ string libstdc++ libc++

16
推荐指数
4
解决办法
9124
查看次数

标签 统计

c++ ×1

libc++ ×1

libstdc++ ×1

string ×1