我可以在C#中获取变量或对象的物理地址吗?

我可以在C#中获取变量或对象的物理地址吗?,c#,C#,我应该用C语言做一个项目来展示列表是如何工作的 我认为在这样的图形界面中显示是个好主意: -在“值”字段中:节点的值 -在“下一个”字段中:下一个节点的物理地址 这可能吗?是的,使用不安全的代码(至少是虚拟地址,而不是原始物理内存地址,但这正是您想要的) 看一看细节。它指导您完成以下示例的编译(它要求在项目属性或/safe开关中启用不安全代码),以及获取可移动变量位置时可能遇到的陷阱,这些陷阱要求fixed关键字保持在同一位置,基本上是这样说的 int number; int* p = &

我应该用C语言做一个项目来展示列表是如何工作的

我认为在这样的图形界面中显示是个好主意:

-在“值”字段中:节点的值
-在“下一个”字段中:下一个节点的物理地址

这可能吗?

是的,使用不安全的代码(至少是虚拟地址,而不是原始物理内存地址,但这正是您想要的)

看一看细节。它指导您完成以下示例的编译(它要求在项目属性或
/safe
开关中启用不安全代码),以及获取可移动变量位置时可能遇到的陷阱,这些陷阱要求
fixed
关键字保持在同一位置,基本上是这样说的

int number;
int* p = &number; //address-of operator &

这个问题是关于C的,所以我的答案也是:)事实上,不安全的C#代码看起来很像C/C++。。我很惊讶。您的
列表
实现也可以包含高级内存管理,如果您的目的是演示如何使用内存。除非变量是固定的,否则不能保证它不会更改位置。值得注意的是,托管变量通常可以在垃圾收集期间移动,因为垃圾收集器可以(并且将)对内存进行碎片整理。请注意,您无法获得物理地址。你能得到的只是虚拟地址