我有一个 64 位处理器。这会占用多少内存?
var x = new point[3];
public struct point
{
int x;//4 bytes
int y;//4 bytes
}
我的猜测是,堆栈将保存对堆的引用。因为我有一个 64 位处理器,所以引用本身是 8 个字节。
在堆上将初始化三个“点”。所以这将是至少 24 (8x3) 个字节。
有没有办法从理论上确定 x 占用的确切内存?
您可以使用sizeof
.. 因为您想知道分配了多少内存(无论分配在哪里 - 实现细节):
unsafe {
var sizeRequired = sizeof(point) * 3;
}
如果你想包括参考的大小,你可以添加它。
您可以相对容易地计算出对象使用的内存量 - 您几乎就在那里。
以下是您需要计算的参考类型的大致列表,例如Array
:
所以你粗略计算缺少标题和字段(如“长度”)。
详细信息包含在许多来源中,例如: