著作一覧 |
教わったのでメモ。
Wikipediaの64ビットがまとまっている。
Linuxは、LP64。LPというのは、LongとPointerが64ビットという意味。
一方、Win64はLLP64。LLPというのは、Long longとPointerが64ビットという意味(Longは32ビット)。
そこで、Linuxであれば、sizeof(long) == sizeof(void*)なのでいい加減なキャストでも問題ないが、Win64だとsizeof(long) < sizeof(void*)なのでいい加減なキャストだと問題がおきる。
ここでのいい加減なキャストというのは、32ビットを前提とした
void foo(long l) {
strcpy((void*)l, "foobar");
}
みたいなもの。
ジェズイットを見習え |