C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系
- 互联网
- 2025-09-07 16:24:01

C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系
code review!
文章目录 C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系 1.`std::vector<float>` 的内存占用 2.`std::vector<float>` 的 `capacity` 和 `size` 关系 3.如何测量 `std::vector<float>` 的实际内存占用? 3.1.元数据占用 3.2.堆内存占用 3.3.总内存占用 4.总结 5.`sizeof` 的作用 6. 数据类型的大小 6.1.常见基本数据类型的大小(以字节为单位) 6.2.说明 7.某种数据类型的变量的大小 7.1.内存对齐的影响 8.三者的关系 9.常见问题解答 9.1.为什么 `sizeof` 结果可能包含补齐字节? 9.2.多平台下数据类型的大小是否一致? 9.3.如何避免结构体的内存浪费? 9.4.如何强制让变量紧凑存储? 9.5.总结 10.std::string 的内存结构和大小计算 10.1.`sizeof(str)` 与 `str.size()` 的区别 10.1.1.`sizeof(str)` 10.1.1.2 `str.size()` 10.2.内存占用分析:`std::string` 的堆内存和栈内存 10.2.1.栈上内存 10.2.2.堆上内存 10.2.3.小字符串优化(SSO)示例 10.3.总结:`sizeof(str)` 与 `str.size()` 的关系 10.4.扩展:计算 `std::string` 的总内存占用 10.4.1.如何计算 `std::string` 的总内存占用? 10.4.2.示例代码:计算总内存 10.5.总结核心点 1.std::vector<float> 的内存占用std::vector 是一个动态数组,它的内存分为两部分:
固定大小的元数据部分:
包括指向元素存储的指针、当前存储的元素个数(size)、以及分配的容量(capacity)等。 这部分的大小是固定的,与 std::vector 的模板参数(如 float)无关。 通常在 64 位系统上,这部分占用 24 字节(3 个指针大小,每个 8 字节)。 可以通过C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系”