相关疑难解决方法(0)

为什么uint64_t在类中使用时需要比2 uint32_t更多的内存?以及如何防止这种情况?

我将以下代码作为示例.

#include <iostream>

struct class1
{

    uint8_t     a;
    uint8_t     b;
    uint16_t    c;
    uint32_t    d;
    uint32_t    e;

    uint32_t    f;
    uint32_t    g;
};

struct class2
{

    uint8_t     a;
    uint8_t     b;
    uint16_t    c;
    uint32_t    d;
    uint32_t    e;

    uint64_t    f;
};

int main(){
    std::cout << sizeof(class1) << std::endl;
    std::cout << sizeof(class2) << std::endl;
    std::cout << sizeof(uint64_t) << std::endl;
    std::cout << sizeof(uint32_t) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

版画

20
24
8
4
Run Code Online (Sandbox Code Playgroud)

所以很容易看出一个uint64_t和两个uint32_t一样大,为什么类2有4个额外的字节,如果它们是相同的,除了替换两个uint32_t用于uint64_t.

c++ size class uint64

6
推荐指数
1
解决办法
1209
查看次数

标签 统计

c++ ×1

class ×1

size ×1

uint64 ×1