int
(Int32
) 的内存占用为 4 个字节。但是什么是内存占用:
int? i = null;
和:
int? i = 3;
这是一般情况还是取决于类型?
最佳答案
我不是 100% 确定,但我相信它应该是 8 个字节,int32 应该是 4 个字节,并且(因为在 32 位机器上每件事都必须是 4 字节对齐)另外 4 个字节作为 bool 值表示是否指定了整数值。
注意,感谢@sensorSmith,我现在知道 .Net 的较新版本允许可空值存储在较小的占用空间中(当硬件内存设计允许独立分配较小的内存块时)。在 64 位机器上,它仍然是 8 字节(64 位),因为这是可以寻址的最小内存块......
例如,可为空的 bool 值只需要一个位,IsNull 标志需要另一个位,因此总存储要求小于一个字节,理论上它可以存储在一个字节中,但是,像往常一样,如果可以分配的最小内存块是 8 字节(如在 64 位机器上),那么它仍将占用 8 字节内存。
关于c# - Nullable<T> 的内存占用是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1381308/