【问题标题】:How to get address of an object in C#如何在C#中获取对象的地址
【发布时间】:2011-09-14 18:35:53
【问题描述】:

如何在 c# 中获取对象的地址?

我找到了

GCHandle handle = GCHandle.Alloc(obj, GCHandleType.WeakTrackResurrection);

int address = GCHandle.ToIntPtr(handle).ToInt32();

但需要一些更简单的代码

这里可以使用&操作符吗?

【问题讨论】:

  • 我知道我会后悔问,但你为什么需要 C# 对象的地址?
  • 真正的问题是你打算如何处理 C# 中的对象地址?
  • 在 .NET 中获取任意对象的地址是不可能的,但如果您更改源代码并使用单声道,则可以做到。请参阅此处的说明:stackoverflow.com/questions/25410158/…

标签: c#


【解决方案1】:

默认情况下,对象在 C# 中没有固定地址,您需要明确告诉垃圾收集器将其固定。

详细说明请参见http://geekswithblogs.net/robp/archive/2008/08/13/speedy-c-part-3-understanding-memory-references-pinned-objects-and.aspx

【讨论】:

    【解决方案2】:

    不安全的代码。 使用 /unsafe 编译(VS 项目属性中的复选框)

    unsafe
    {
        fixed(MyobjType* objptr = &myobj)
        {
          // do sthng
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多