|
|
发表于 2008-5-26 19:57:00
|
显示全部楼层
Re: Re: Re:怎么关闭垂直同步
系统崩溃: Re: Re:怎么关闭垂直同步
没乱讲,你用GCHandle锁定数据,然后在重分配前后通过AddrOfPinnedObject方法查看一下数据的地址就会发现根本没有改变。
你说的那些用在字符串上倒是很合适。
就是在乱讲,你在重分配前后通过AddrOfPinnedObject来取得地址有何意义??GCHandle始终指向的都是同一个数组,也就是说重分配后GCHandle指向的实际上已经是旧的那个数组了,地址当然没有改变。重分配后要再次用GCHandle锁定才能得到新的数组的地址。
Dim tArray(2000) As Byte
Dim tP As IntPtr
Dim tHandle As System.Runtime.InteropServices.GCHandle
tHandle = System.Runtime.InteropServices.GCHandle.Alloc(tArray, System.Runtime.InteropServices.GCHandleType.Pinned)
tP = tHandle.AddrOfPinnedObject
tHandle.Free()
ReDim tArray(2000)
tHandle = System.Runtime.InteropServices.GCHandle.Alloc(tArray, System.Runtime.InteropServices.GCHandleType.Pinned)
tP = tHandle.AddrOfPinnedObject
tHandle.Free()
|
|