我猜不是,但这样的输出表明它确实如此
string s="";
cout<<&s;
Run Code Online (Sandbox Code Playgroud)
拥有地址的空字符串有什么意义?你认为不应该花费任何记忆吗?
aro*_*oth 22
是的,您保存在内存中的每个变量都有一个地址.至于"点"是什么,可能有几个:
std::string为包含它而创建的对象可以分配自己的字符缓冲区来保存这些数据,因此它也不一定是空的.null字符串之间存在差异.有时,区别可能很重要.是的,我非常同意语言的实现,即"空"变量应该仍然存在并消耗内存.在面向对象的语言中,对象的实例不仅仅是它存储的数据,而且拥有当前没有存储任何实际数据的对象实例也没有错.
遵循您的逻辑,int i;也不会分配任何内存空间,因为您没有为其分配任何值.但那么后来的运作怎么可能i = 10;呢?
当你声明一个变量时,实际上是分配具有一定规模(根据变量的类型)的存储空间来存储的东西.如果您想以正确的方式使用此空间取决于您,但变量的声明是触发内存分配的原因.
一些编码实践表明,在您需要使用它之前,不应声明变量.
"空"字符串对象仍然是一个对象 - 其内部实现可能不仅仅是存储文字字符串本身所需的内存.除此之外,大多数C风格的字符串(如C++中使用的字符串)都是以空值终止的,这意味着即使"空"字符串仍然使用一个字节作为终结符.
| 归档时间: |
|
| 查看次数: |
1768 次 |
| 最近记录: |