繁体   English   中英

如何通过变量查找分配的内存?

[英]how to find allocated memory by a variable?

class app {
        public int x = 3; 

        static void Main(string[] args)
        {
        }
}

是否有可能获得x变量分配的内存地址?

该示例可以在CC++C#D 我希望很清楚,谢谢

在C和C ++中,这很简单。 我将用C ++给出示例:

struct App
{
   int x;
   App() : x(3) { }
};

int main()
{
  App a;
  int * p = &a.x; // address goes here
}

当然没有“变量App::x ”之类的东西,因为App只是类型 这种类型的,如每个实例 a中的例子中,带有自己的一套部件的变量,并且容易获得的指针成员变量。 (C语言中的纯数据结构也是如此。)

请注意,C ++还有另一个相关功能:成员指针。 这使我们能够形成不透明的值int App::*pm = &App::x ,它本身并不指向任何内容,但仅在类内部携带有关App::x 偏移量的信息。 该动物可以与实例一起使用以获得实际值,例如a.*pm

在大多数类似C的语言中,“ & ”号是“地址”运算符:

int x;
printf("Address of x is %p\n", &x);

&的返回值实际上是指向其操作数的指针

跳过D和E。C#和F#(和其他CLR语言)-通常,任何局部变量都没有固定的地址。 可以使用托管调试器(即WinDbg + SOS)查找任何特定变量的地址,也可以将fixed变量与互操作类一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM