【发布时间】:2020-02-28 11:40:47
【问题描述】:
我尝试使用sizeof(string),发现它是 24。
当我尝试创建一个字符串数组时,我发现编译器也将数组的大小乘以 24。这是 std::string 的真实大小吗?
我以为只有 4 个字节。如果真的是24字节,如何优化?
【问题讨论】:
-
可能是 4,可能是 24,可能是 10 TB。 C++ 标准不要求任何特定对象的任何特定大小。根据您的编译选项,它甚至可能会有所不同。这就是 C++ 的工作原理,不,没有办法“优化”它。
-
假设“字符串”是指标准头
<string>中指定的类型std::string,大小 (sizeof std::string) 是实现定义的(例如依赖于编译器)。此外,std::string动态分配内存来存储其数据,因此sizeof(a_string)与表示字符串的实际数据没有保证关系。 -
"我认为它只有 4 个字节" - 我认为您可能在某个时候在 32 位系统上的
char*上完成了sizeof。根本不是一回事。