如何检查结构消耗的字节数?

如何检查结构消耗的字节数?

如果我创建一个相对较大的结构,我如何计算它在内存中占用的字节数?

我们可以手动完成,但如果结构足够大,那么我们该怎么做呢?是否有一些代码块或应用程序?


交互式爱情
浏览 381回答 3
3回答

largeQ

您可以使用sizeof运算符或SizeOf函数。这些选项之间存在一些差异,请参阅参考链接以获取更多信息。无论如何,使用该函数的一个好方法是使用这样的泛型方法或扩展方法:static&nbsp;class&nbsp;Test{ &nbsp;&nbsp;static&nbsp;void&nbsp;Main() &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//This&nbsp;will&nbsp;return&nbsp;the&nbsp;memory&nbsp;usage&nbsp;size&nbsp;for&nbsp;type&nbsp;Int32: &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;size&nbsp;=&nbsp;SizeOf<Int32>(); &nbsp;&nbsp;&nbsp;&nbsp;//This&nbsp;will&nbsp;return&nbsp;the&nbsp;memory&nbsp;usage&nbsp;size&nbsp;of&nbsp;the&nbsp;variable&nbsp;'size': &nbsp;&nbsp;&nbsp;&nbsp;//Both&nbsp;lines&nbsp;are&nbsp;basically&nbsp;equal,&nbsp;the&nbsp;first&nbsp;one&nbsp;makes&nbsp;use&nbsp;of&nbsp;ex.&nbsp;methods &nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;=&nbsp;size.GetSize(); &nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;=&nbsp;GetSize(size); &nbsp;&nbsp;} &nbsp;&nbsp;public&nbsp;static&nbsp;int&nbsp;SizeOf<T>() &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;System.Runtime.InteropServices.Marshal.SizeOf(typeof(T)); &nbsp;&nbsp;} &nbsp;&nbsp;public&nbsp;static&nbsp;int&nbsp;GetSize(this&nbsp;object&nbsp;obj) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;System.Runtime.InteropServices.Marshal.SizeOf(obj); &nbsp;&nbsp;}}

一只萌萌小番薯

您可以将sizeof()关键字用于不包含任何字段或属性作为引用类型的用户定义结构,也可以使用Marshal.SizeOf(Type)或Marshal.SizeOf(object)获取具有顺序或显式布局的类型或结构的非托管大小。
打开App,查看更多内容
随时随地看视频慕课网APP