sizeof(int) immer gleich sizeof(void*)
-
Darf ich davon ausgehen?
MfG SideWinder
-
Nein, eigentlich nicht.
Datenregister und Adressregister der CPU müssen nicht gleich groß sein.Erinner dich an Dos, (far Pointer). Die waren 2x16 Bit groß, int nur 16.
-
Für 32bit Prozessoren (auf jeden fall für i386+) ist das imho schon so.
-
Nee, Bluecode,
i386er laufen doch nicht nur unter 32 Bit OSsen.Probier es aus, lad dir den Digital Mars Compiler für 16Bit Dos und mach ein sizeof.
Kannste auch unter WindowsXP starten.
-
Ich würde auch nein sagen. Auf den 64bit-Versionen von Windows sind INT und LONG beispielsweise nur 32bit groß. Der void-Zeiger hingegen natürlich 64bit.
-
@Side
Ich denke MAGs Aussage ist die entscheidene hier. sizeof(int) != sizeof(void*) war in der guten alten 32-bit Zeit eigentlich nur auf "komischen" Systemen true. Wer für "normale" x86-Platformen entwickelt hat konnte ruhig von sizeof(int) == sizeof(void*) ausgehen, da alle gängigen 32-bit Systeme ILP-32 verwenden (int = long = Pointer).Mit dem Beginn der 64bit-Zeit ist diese Einheitlichkeit aber vorbei. Unix-artige Systeme verwenden LP64. Hier sind long und Pointer jeweils 64-bit. Windows hingegen verwendet LLP64, wo long long und Pointer jeweils 64-bit sind. int und long hingegen bleiben 32-bit. Kurz: wenn man portablen Code schreiben will, darf man sizeof(int) == sizeof(void*) nicht annehmen.
-
ich meinte mit i386+ ja auch nicht nur den Prozessor, sondern auch, dass er sich im 32bit Protected-Mode befindet. Mir ist aber klar, dass im Allgemeinen man das nicht annehmen kann, das kommt in dem Fall auf Compiler und Platform an.
-
Okay, danke!
MfG SideWinder