我目前正在开发一个低内存平台的应用程序,它需要一个std :: set的许多短字符串(> 100,000个字符串,每个字符串4-16个字符).我最近将这个集合从std :: string转换为const char*以节省内存,我想知道我是否真的避免了每个字符串的所有开销.
我尝试使用以下内容:
std::string sizeTest = "testString";
std::cout << sizeof(sizeTest) << " bytes";
Run Code Online (Sandbox Code Playgroud)
但它只给了我一个4字节的输出,表明该字符串包含一个指针.我很清楚字符串在内部将它们的数据存储在char*中,但我认为字符串类会有额外的开销.
std :: string的GCC实现是否比sizeof(std :: string)指示的更多开销?更重要的是,这个数据集的重要性是否显着?
以下是我平台上相关类型的大小(它是32位,每字节有8位):
char:1个字节
void*:4个字节
char*:4个字节
std :: string:4个字节