gpt4 book ai didi

c# - 如何确定对象的大小,c#?

转载 作者:可可西里 更新时间:2023-11-01 09:13:01 25 4
gpt4 key购买 nike

我有以下类(class):

public class MyClass
{
public string Name { get; set; }
public int Age { get; set; }
public double Amount { get; set; }
}

当我尝试使用 WinDbg 在 64 位系统上找出此类的大小时,我得到的大小为 40我无法理解,据我所知 MyClass 应该有

8 bytes for SyncBlock
8 bytes for TypeHandle
8 bytes for string reference
4 bytes for Int32
8 bytes for double

= 36 bytes

我没有 10 个声誉,这就是我无法发布图片的原因。任何人都知道为什么 WinDbg 显示 4 个额外字节?

最佳答案

我相信您看到的是在 64 位构建中需要对齐 8 字节边界(以及 32 位构建中的 4 字节边界)的效果。 40 是最接近的大小 >= 36,位于 8 字节边界上。这些链接谈论对象大小:

Of Memory and strings (Jon Skeet's blog)

Benchmarking C# Struct and Object Sizes

Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects

How Much Memory Does a C# String Take Up

关于c# - 如何确定对象的大小,c#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com