为什么在c++中定义字符串变量, 使用sizeof()不管是初始化还是没有初始化输出字节数都是占32字节 ?
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
string test1;
string test2 = "Hellow World!";
// sizeof(test1) -> 输出: 32
cout << "test1 = " << sizeof(test1) << endl;
// sizeof(test2) -> 输出: 32
cout << "test2 = " << sizeof(test2) << endl;
system("pause");
return 0;
}
因为 string 变量, 是一种特殊的"对象", 在这个对象的内部, 保存了一个指针, 这个指针指向一块内存, 这个内存, 是用来存储对应的字符串; sizeof(string变量) 只是计算string 变量在内存中的空间大小, 也既是包含(指针 和 其它成员的内存空间大小); 并没有包含这个指针所指向的内存.
所以无论string 的字符串多长, 这个string 变量在内存中只占用32字节.
字符串长度可以使用 string变量.length() 或 string变量.size() 来计算