字符串变量的大小
Size of string variable
我有两个问题:
- 字符串变量使用多少 RAM?它是 28 个字节,无论它由多少个字符组成?
- 如果此类字符串的长度超过 28 个字符怎么办?是否需要多 2 倍(56 字节(?
字符串变量使用多少 RAM?
C++没有RAM的概念。它只知道静态内存、自动内存和动态内存。如何实现这些取决于操作系统和编译器的特定细节。
string
对象通常存储在自动内存中(例如在线程的堆栈上(,除非您通过new
运算符在动态内存中(例如在堆上(中显式分配它。如果string
是用new
分配的类/结构的成员,但本身不是new
的,那么它恰好在自动内存中,恰好由动态内存支持。
它是 28 个字节,无论它由多少个字符组成?
在任何情况下,分配sizeof(string)
字节数,可能是也可能不是28字节,这取决于string
的特定实现。但是,是的,string
对象的大小在编译时是固定的,并且在运行时不会更改,无论字符串中存储了多少个字符。
如果此类字符串的长度超过 28 个字符怎么办?是否需要多 2 倍(56 字节(?
string
的字符数据通常分配在动态内存中(除非长度很小并且string
实现了"短字符串优化"(。分配的大小将始终是string
的capacity
(加上string
allocator
的一点开销(。但是使用多少capacity
取决于string
的特定实现来决定。虽然capacity
可以随着角色的添加而增长,但它一次增长多少取决于实现。
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 从字符串变量中逐字符读取单词
- 对函数 PlaySound 使用字符串变量
- C++中的字符串变量
- 如何在 c++ 中将字符串迭代器变量传递给函数?
- 如何使用C++将字符串中的字符转换为整数变量
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 我可以用字符串变量而不是它的名字创建容器吗? C++
- 字符串变量的大小
- 使变量字符串忽略转义序列
- 如何在 C 宏中将变量字符串与文字字符串连接起来?
- 在 Py_BuildValue 中返回变量字符串
- 如何将字符串作为变量与另一个变量字符串进行比较
- 从变量字符串中提升文件系统路径
- 用变量字符串声明设置容器
- 通过变量(字符串)调用obejct和方法
- C++创建文本和变量字符串
- 如何在循环中使用变量字符串