在C#
如何在不使用关键字unsafe
的情况下获取变量的地址。 我不想改变地址或访问它,只是有它的位置。获取变量的地址位置
2
A
回答
4
您必须在提取地址之前固定对象。否则,GC可以自由移动。
object variable = new object();
GCHandle handle = GCHandle.Alloc(variable, GCHandleType.Pinned);
IntPtr address = handle.AddrOfPinnedObject();
通常情况下,您只会在需要某种非托管互操作的情况下执行此操作。然而,即使那样,也很少需要这种手动操作。
17
你不能。
而且有很好的理由,因为地址不固定。它可以 - 也将会 - 被CLR的内存管理所移动。
7
由于.NET感动身边所有的时间管理的内存变量,你需要“销”的变量,然后用GCHandle
获取其位置:
static void Main()
{
string myVar = "This is my string";
GCHandle handle = GCHandle.Alloc(myVar, GCHandleType.Pinned);
IntPtr pointer = GCHandle.ToIntPtr(handle);
Console.WriteLine(pointer);
handle.Free();
}
不过,我相信这实际上移动的原始变量为新的位置由GCHandle
引用,并且它不适用于所有类型 - 只有blittable类型。
相关问题
- 1. 获取地址的位置
- 2. 从IP地址获取地理位置
- 3. 获取阵列地址的位置2D
- 4. 获取某个位置的地址
- 5. 从我的位置获取地址android
- 6. 获取Ip地址的位置C#,asp.net
- 7. 获取环境变量的地址
- 8. 获取Powershell变量的内存地址
- 9. 获取C_变量__regvar的地址
- 10. blackberry gps获取当前位置地址?
- 11. 从经纬度获取位置地址
- 12. 获取活动/位置/页面 - 地址
- 13. 获取网址并设置变量
- 14. Google地图 - 获取当前地图位置的地址
- 15. 获取undefined的jQuery位置变量
- 16. Python - 设置/获取环境变量和地址
- 17. 如何获取地理位置以返回jQuery中的变量?
- 18. 查找谷歌地图上的位置由获取变量
- 19. javascript中的全局变量获取地理位置
- 20. 如何使用Google API获取IP地址的地理位置?
- 21. 获取地图或位置Android中的地址
- 22. 地址位置
- 23. Angular - 使用$位置获取GET变量
- 24. 获取网址变量
- 25. 从一个PHP变量的地址获取地图和街景!
- 26. mvc4:将位置信息传递给javascript变量以获取地理位置
- 27. 从Android的地址获取位置(经度/纬度)没有城市的地址
- 28. 在Visual Studio中查看变量的地址位置
- 29. 变量的引用和地址(内存位置)
- 30. JavaScript如何从IP地址获取地理位置?
如果不使用'unsafe'方法,我不认为这是可能的 – jAC
我不相信这是不可能的,因为你需要显式地获取指向变量的指针以获取其地址。 http://msdn.microsoft.com/en-us/library/zcbcf4ta(v=vs.110).aspx –
只是想知道....为什么? –