C++中字符串长度和字符串占用内存是不是差1个字节

后者有个尀0
2024-11-29 00:35:43
推荐回答(4个)
回答1:

这个很难说
不过字符串占的内存一定比长度还要大
起码有多一个字节来存储最末尾的'\0'
但是不一定只多一个字节

将一个连续的存储空间作为字符串的时候
遇到'\0'也就是一个字节8位都是0的时候,就认为是字符串的结束
再也不关心后面的内容了
所以实际字符串占用内存字节数可能比其字符串内容长度长不只一个字节

回答2:

不。C++的string类有另外机制,它的对象的字符串不以'\0'结束,所以长度和占用内存单元数相等。你可以如下验证:

int main(void){
    string str("1234567890");
    cout << str.length() << ' ' << str.size() << endl;
}

回答3:

你char数组写的多大内存就是多大。另外你敢说 char str[] = "字符串"; 的字符串长度不是刚好比内存占用少1?

回答4:

用strlen()和sizeof()看一下就知道了