【问题标题】:See physical address of variables查看变量的物理地址
【发布时间】:2019-04-04 08:59:13
【问题描述】:

自从我开始成为一名程序员以来,我一直使用“高级”语言工作,而不会中断我的内存。目前我是 C# 开发人员,我一直想知道是否有办法查看我的代码的“内部”,我的意思是查看我的变量的地址等。

我只是想提高我作为程序员的理解。

【问题讨论】:

标签: c#


【解决方案1】:

你只需要使用unsafe关键字

此外,如果您使用 resharper,您可以轻松查看 IL

Resharper -> windows -> IL Viewer

int number = 234;

unsafe 
{
    // Assign the address of number to a pointer:
    int* p = &number;

    // Print the value of *p:
    System.Console.WriteLine("Value at the location pointed to by p: {0:X}", *p);

    // Print the address stored in p:
    System.Console.WriteLine("The address stored in p: {0}", (int)p);
}

其他资源

How to: obtain the address of a variable (C# Programming Guide)

要使用unsafe,您需要显式设置构建设置

-unsafe (C# Compiler Options)

在 Visual Studio 开发中设置此编译器选项 环境

  • 打开项目的属性页面。

  • 单击构建属性页。

  • 选中允许不安全代码复选框。

【讨论】:

  • IL 代码中的地址真的是物理地址还是运行时抽象?好久没关注这个了,我也不确定了。我想你会从头顶知道...
  • No IL 不显示实际的物理内存地址,它是 .Net 用于运行您的应用程序的中间语言,从这里它被转换为具有实际地址等的 PE 代码跨度>
  • 我就是这么想的。我只是问,因为 OP 可能有这样的印象,他能够在 IL 代码中看到实际的物理地址。可能值得澄清吗?
  • @Fildor,IL 不是物理的,我将这个问题解读为幕后的内容,而 IL 是一个很好的工具。
  • @DragandDrop “我的意思是查看我的变量等的地址” 这就是我所指的。除此之外,我同意。不确定 OP 究竟会看到什么。这就是为什么我认为在查看 IL 代码时包含他可以和不能期望的内容是值得的。问题的标题也是一种暗示……
猜你喜欢
  • 2023-03-29
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 2019-09-28
  • 2011-05-11
相关资源
最近更新 更多