在 rust 中,为什么将 u128 结构与 u32 组合会产生 32 字节结构?

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

如果我做这个结构

#[repr(C)]
struct Thing {
   f1: u128
   f2: u32
}

然后我得到的尺寸为 32,对齐方式为 16。

为什么它不是只有 20 个字节,我该如何修复它?

上下文是我正在尝试构建一个结构来表示 MMIO 数据,因此我需要将东西放在正确的位置。

我只是尝试了 repr(packed)。这似乎有效,但文档似乎不鼓励其使用。

rust struct
1个回答
0
投票

答案不是 repr(packed),这确实使尺寸看起来正确,但它只会立即导致对齐问题。

解决方案是使用 repr(C),但只需回顾一下我的一堆结构并找出哪里放错了地方。

© www.soinside.com 2019 - 2024. All rights reserved.