c#でポインター(unsafeコード)を使う場合は、オブジェクトが使用しているメモリが移動しないように fixed を使用する必要がある。
unsafeとfixed
using System;
class Test {
public int num;
public Test(int i) { num = i; }
}
class UseFixed {
unsafe static void Main() {
Test o = new Test (19);
fixed (int *p = &o.num) {
Console.WriteLine("Initial value of o.num is " + *p);
*p = 10;
Console.WriteLine("New value of o.num is " + *p);
}
}
}