タグ

2010年10月22日のブックマーク (1件)

  • LPとLLP - L'eclat des jours(2010-10-16)

    _ LPとLLP 教わったのでメモ。 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"); } みたいなもの。

    kenichiice
    kenichiice 2010/10/22
    「Linuxであれば、sizeof(long) == sizeof(void*)なのでいい加減なキャストでも問題ないが、Win64だとsizeof(long) < sizeof(void*)なのでいい加減なキャストだと問題がおきる。」