PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : malloc/calloc/ralloc, granularität



FriedrichLaher
21-02-2012, 19:36
ist es auf einem 64BitSystem überhaupt sinnvoll, Speicher nicht in Vielfachen von 8Byte
anzufordern? Wird also der Platz bis zu nächsten 8ByteGrenze ggf. von weiteren
malloc/calloc Aufrufen genutz?

ThorstenHirsch
21-02-2012, 19:52
Soweit ich 64bit verstanden habe, heißt 64bit nicht, dass man nur noch in 64bit-Blöcken adressieren kann. Ganz im Gegenteil: die Adressbreite ist 64bit, d.h. man kann nun 2^64 Bytes (einzeln) adressieren.

jeebee
21-02-2012, 21:48
Grundsätzlich kommt es drauf an, auf welchem 64bit System du dich befindest.

Es kommt auch drauf an, was du mit malloc allozierst, z.B. werden struct's generell auf ein Vielfaches der Grösse des grössten Elements vergrössert (z.B. die Grösse eines structs, welches als grösstes Element einen double enthält, wird auf das nächste Vielfache von sizeof(double) vergrössert).

Zusätzlich kann es auch sein, dass die Implementation von malloc und co. auch noch ein paar zusätzliche Bytes zur Verwaltung der einzelnen allozierten Blöcke verwendet und daher (das ist nur ein Beispiel) intern immer mindestens 16 Bytes alloziert.

HTH
-- jeebee