在子主题存储开销(在章节)-C# 5.0 in a Nutshell 书中-有这样一条一般说明:
现在,我想知道为什么结构 A 中的字段会产生空间浪费?或者,作者对整篇笔记的看法是什么?
最佳答案
每个byte
字段占1个字节,而每个long
字段占8个字节。这意味着,虽然 b
可以放在内存中的任何位置,但 l
需要放在 8 的倍数的地址上。它不能放在地址 0
因为它已经被 b
占用了;因此,它必须放在下一个可用的 8 的倍数处,即 8
,导致 7 个字节的中间空间被浪费。
---------------------------------------------------------------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---------------------------------------------------------------------------------
<--b-> <------------------l-------------------->
<--------------waste------------->
关于c# - 为什么存储开销会在 C# 数据类型中产生浪费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504491/