Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试创建对象时跳过了8个字节?_C++ - Fatal编程技术网

C++ 尝试创建对象时跳过了8个字节?

C++ 尝试创建对象时跳过了8个字节?,c++,C++,因此,对于对象b,我想知道为什么我没有将0x7ffc5996b178作为我的地址。为什么C++在启动下一个对象之前跳过8字节?< /p> < p>将各种评论转换成社区wiki回答。< /P> 作业有必要吗?如果你使用V3(双a,双b,双c):x(a),y(b),z(c){cout什么平台(操作系统,编译器,版本)?是否打开或关闭优化?g++(Ubuntu 4.8.4-2ubuntu1~14.04.3)4.8.4。编译时没有使用其他标志第二个构造函数有什么区别吗?如果没有,为什么包括它?(参见M

因此,对于对象
b
,我想知道为什么我没有将
0x7ffc5996b178
作为我的地址。为什么C++在启动下一个对象之前跳过8字节?< /p> < p>将各种评论转换成社区wiki回答。< /P>

  • 作业有必要吗?如果你使用
    V3(双a,双b,双c):x(a),y(b),z(c){cout什么平台(操作系统,编译器,版本)?是否打开或关闭优化?g++(Ubuntu 4.8.4-2ubuntu1~14.04.3)4.8.4。编译时没有使用其他标志第二个构造函数有什么区别吗?如果没有,为什么包括它?(参见MCVE-)赋值是否必要?如果使用
    V3(双a,双b,双c):x(a),y(b),z(c),有什么变化吗{猜一猜:x86缓存线是64字节。通过这种方式对齐,前两个对象将放入一个缓存线,第三个对象将放入第二个缓存线。如果不这样对齐,第三个对象将被拆分为两个缓存线,这是不好的。不过,正如Jonathan所说,它不一定定义良好。如果使用c编译在arch上,对象在内存中密密麻麻地排列,而在使用g++时则不是。
    
    #include <iostream>
    using namespace std;
    
    class V3 {
    public:
        double x, y, z;
        V3(double a, double b, double c) {
            x=a;
            y=b;
            z=c;
            cout << "Addresses are " << &x << " " << &y << " " << &z << endl;
        }
    };
    
    int main() {
        V3 a(1,1,1), b(2,2,2), c(3,3,3), d(4,4,4);
        cout << sizeof(a) << " " << sizeof(b) << " " << sizeof(c) << " " << sizeof(d) << endl;
    }
    
    Addresses are 0x7ffc5996b160 0x7ffc5996b168 0x7ffc5996b170
    Addresses are 0x7ffc5996b180 0x7ffc5996b188 0x7ffc5996b190
    Addresses are 0x7ffc5996b1a0 0x7ffc5996b1a8 0x7ffc5996b1b0
    Addresses are 0x7ffc5996b1c0 0x7ffc5996b1c8 0x7ffc5996b1d0
    24 24 24 24