c# - 为什么存储开销会在 C# 数据类型中产生浪费?

标签 c# .net

在子主题存储开销(在章节)-C# 5.0 in a Nutshell 书中-有这样一条一般说明:

enter image description here

现在,我想知道为什么结构 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/

相关文章:

c# - 使用 c#/ASP.net 应用程序获取 SqlParameter 已包含在另一个 SqlParameterCollection 错误中

c# - 如何在 C# 中找出句子中的下一个单词?

c# - BindingList<> ListChanged 事件

.net - 在 Windows 8 上用于开发目的的 LDAP 服务器

c# - DataGridView.Editmode = EditOnEnter。如何选择要删除的行?

c# - 如何从具有复杂键的 FormCollection 构建 C# 对象

c# - DateTime 到字符串,在保留文化的同时将换行符格式化为字符串

c# - Kinect RGB 转 AVI 文件

c# - 如何在分布式系统中生成重复概率低的标识符?

c# - 通过 WCF 提供类对象的数组或列表