Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

.net framework 注意点

.net frameworkから古いタイプのDLL(アンマネージ)を呼ぶ際に ハマりまくったのでメモを残しておく。

 

1) GCHandle.Alloc はmanaged objectとしてのヒープメモリであり、 Pin指定してもアンマネージDLLに渡すとアドレスが変わってしまいすぐに落ちる。

Marshal.AllocHGlobalはアンマネージのヒープ領域に取られた メモリ断片であり、アンマネージのDLLに安全に渡せ、正常に動作する。