c#でアドレスを意識するとき

サンプルのソースをみていて、GCHandle.Allocというのが出てきて面食らいました。いったい何をやっているんだろう?そこで色々調べてびっくり。
C#ではGCなどの働きにより、アドレスは絶えず変動してる様なのです。これではポインタとっても仕方が無い。
そこでGCHandleを使います。と、引き続き調べて書こうとしましたが、
ぬるり。
VarPtr, StrPtr, ObjPtr関数の代わりになるものは? - .NET Tips (VB.NET,C#...)
より詳しく分り易くすべてかかれています。とっても参考になります。

まず、できればunsafeは避けたいものです。アセンブリごとunsafeになっちゃうし。

へぇ×5(古い)