32bit用に書かれたC++のプログラムを 64bit環境で動かそうとした時にハマったのでメモ。 void GetParam(const char* key, int size, ...) { ... for (int i = 0; i < size; ++i) { int* var = va_arg(va, int*); if (var) *var = values[i]; } ... } ... GetParam("foo", 4, &bar, 0, &baz, 0); // ここでsegmentation fault ... 上記のプログラムを動かしたらsegmentation faultで死んでしまいました。 if (var) *var = values[i]; のあたりが怪しいと目星をつけて調べてみると、 なんということでしょう。varの値が0であると期待している箇所で、 0x7