VB2005 での CopyMemory()
CopyMemory() や MoveMemory() を使おうとすると,「AccessViolationExceptionはハンドルされませんでした」および「保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。」が出て悩むこと,2日目。VB が GC を行っていてメモリ上での動的配置が変化することと,Marshalクラスで乗り切れそうだというところまで分かってきた。
Marshalクラス
C だったら悩まなくてもよいところなのに,慣れない VB では仕方ないかも。一方,C で書いたソースが既にあるのだから,それをライブラリ化して VB から呼び出せばよいのでは?とも思う。しかし,昔,FORTRAN のコードを C から呼ぶ際にポインタだらけになって分かりにくいプログラムになったという経験を踏まえると,手を付けたくない領域でもある。