因此,從我所知道的情況來看,我發現的IntPtr的每個託管示例都是錯誤。IntPtr addition
例如: http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/10/16/10987.aspx
我的想法之中,如果IntPtr的是在(或接近)int32.MaxValue在32位系統上,又添加了一個偏移量溢出INT32,是不是仍然一個有效的內存地址(因爲它將在uint32中有效,並且將在IntPtr中由負數表示)?
我相信代碼應該是這樣的:
public static IntPtr Offset(IntPtr src, int offset)
{
switch (IntPtr.Size) {
case 4:
return new IntPtr((int)((uint)src + offset));
case 8:
return new IntPtr((long)((ulong)src + offset));
default:
throw new NotSupportedException("Not supported");
}
}
我瘋了?
有沒有人有一個嘗試和真正的IntPtr另外的例子?
我剛纔看到了.NET Framework 4.0支持IntPtrs一個新的Add方法,有沒有人使用反射來看看MS是什麼在做什麼?我沒有安裝4.0測試版的副本。 – userx 2009-11-10 20:46:44