size_t versus unsigned int
-
Hallo,
ich hab schon häufiger gelesen, dass hier gesagt
wurde, nimm lieber size_t anstatt unsigned int.Warum?
typedef unsigned long size_t;
Ist doch im Prinzip das gleiche, nur dass der Wertebereich
nicht ganz so groß ist... (aber auch vorzeichenlos)Hat das noch nen anderen Grund?
Gruß,
Hesp
-
- auf den meisten (32bit) Plattformen ist long und int eh gleich groß
- size_t ist ein gegebener Typ der gewisse Limits einhält (z.B. kannst Du mit int keine Datei größer 2 GB erzeugen, obwohl die meisten modernen Betriebssysteme das ohne Probleme können)
-
für was nimmt man size_t? allegemein als ersatz für unsigned int?
mfg blan
-
size_t ist ein Win32 Datentype, der ein 64Bit int darstellt:
typedef unsigned long long size_t;
MFG Lars
-
Käse.
size_t ist ein Standardtyp und stellt auch keine 64 Bit Ganzzahl dar.Grundsätzlich ist size_t erstmal ein vorzeichenloser Ganzzahltyp, von dem die Ergebnisse des sizeof Operators sind.
Allgemein bedeutet das, dass size_t für Speichergrössen sinnvoll verwendet werden kann, zB bei Zeigerarithmetik. Wobei man sich in diesem Zusammenhang auch ptrdiff_t mal anschauen sollte.
Warum also size_t statt unsigned int verwenden? Nun, erstmal muss size_t kein Alias für unsigned int sein. Auf Win64 mit LLP64 Datenmodell wird size_t zB unsigned long sein, was dann eine andere Grösse als unsigned int hat. Und size_t stellt sicher, dass man den auf einmal ansprechbaren Speicher auch referenzieren kann. unsigned int tut das nicht, weil es uU dafür einfach zu klein ist.