为什么字符串存储是28而不是24

问题描述 投票:0回答:1

我一直在尝试了解更多有关使用 C++ 的存储内容。我知道它们存储在堆栈中,因此顺序相反。但是,为什么当我想获取字符串的引用时,它显示该字符串的存储空间约为 28 而不是 24,因为 56-28=28。

这是我的代码:

    #include <iostream>
    int main(){
    std::string name = "name";
    int age = 18;
    std::string last = "lastname";






    std::cout << &name << "\n"; //140701916868960
    std::cout << &age << "\n"; //140701916868956
    std::cout << &last << "\n"; //140701916868928
    }
c++ size
1个回答
0
投票
  • 您无法通过简单的指针运算来推断出像
    std::string
    这样的C++对象的存储大小。
  • 64 位程序的默认打包为 8 字节,这意味着存储的任何对象都将与 8 字节边界对齐。
  • C 标准根本没有提到堆栈,并且不能保证变量将按照定义的顺序存储。
© www.soinside.com 2019 - 2024. All rights reserved.