2007年11月17日土曜日

GCHandle.AddrOfPinnedObject()とToIntPtr()の違い


GCHandle

managed objectに対するHandleを表す。

GCHandle.Alloc()

managed objectに対するGCHandleを取得する。同時に固定することも可能。

GCHandle.AddrOfPinnedObject()

GCHandleが表しているmanaged objectのaddressを返す。このとき、GCHandleが表しているmanaged objectはあらかじめ固定していないと例外が発生する。

GCHandle.ToIntPtr()

GCHandle自身のaddressを返す。GCHandleが表しているmanaged object自体は固定されている必要はない。

GCHandle.FromIntPtr()

GCHandle.ToIntPtr()で得られたaddressからGCHandleへ復元する。もちろん同じmanaged objectが追跡できている。

0 件のコメント: