c# - 变量的内存地址

标签 c# memory variables

在C#中是否可以获取变量的内存地址。

我想做的很简单。我想声明 Double 类型的变量, Float、Decimal 并将值 1.1 分配给这些变量中的每一个。那我想 去看看这些值在内存中是如何表示的。我需要获得内存 变量的地址,以便查看它是如何存储在内存中的。一旦我有 内存地址我打算在代码中放置一个断点并使用 Debug -> Windows -> Memory visual studio 中的选项以查看数字如何存储在内存中。

干杯,

最佳答案

是的,在 C# 中可以获得指向存储的原始指针。我建议您阅读 C# 规范的第 18 章,而不是试图在这里解释所有内容,其中详细讨论了这个主题。

但是,如果您想了解各种不同的浮点类型如何存储值,则有比在调试器中查看它们更简单的方法。这些都是有据可查的格式;您可以在维基百科或 msdn 中查找它们,并了解它们在内存中的布局方式。

Decimal 值的二进制表示由 1 位符号、96 位整数和用于除以 96 位整数并指定其中哪一部分是小数的比例因子组成。比例因子隐式为数字 10,提高到 0 到 28 之间的指数。

参见 http://msdn.microsoft.com/en-us/library/system.decimal.aspx了解详情。

double 的二进制表示是一个符号位、11 个指数位(表示从 -1022 到 +1023 的指数)和 52 位尾数(解释为“1”)。其次是 52 位。

参见 http://en.wikipedia.org/wiki/Double_precision或者我关于浮点问题的系列文章:http://blogs.msdn.com/ericlippert/archive/tags/Floating+Point+Arithmetic/default.aspx

float 与 double 相同,只是大小的一半:一个符号位、8 个指数位、23 个尾数位。参见 http://en.wikipedia.org/wiki/Single_precision_floating-point_format了解详情。

关于c# - 变量的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590019/

相关文章:

ios - 使对象随时可用以获得更好的性能

c++ - 可以清除递归函数中的变量吗?

php - 是否可以直接从 php 更改 php 源代码?

c# - Windows Azure : Storage Client Exception Unhandled

c# - 如何在不使用 GLUT 的情况下在 OpenGL 中绘制带纹理的环面?

c - 我是否以错误的方式使用了 realloc?

c - 将字符串存储在共享内存 C 上

Python:在内存中存储 token

c# - 在 C# 中解释 Excel 文件

c# - 为什么这是错误的? (C# 任务继续)