Hey, ich hab folgende Funktion in C gegeben :
void c_function(int32_t x) {
int32_t *a, *b;
if(x >= 0) {
a = malloc(5 * sizeof *a);
...
} else {
b = malloc(18 * sizeof *b);
...
}
... // evtl. weitere Anweisungen,
// die a oder b betreffen
Nun sind zum Heap folgende Informationen gegeben:
Der Heap verwaltet den Speicher in Blöcken mit einer Größe von jeweils
16 Bytes und die Länge von Zeigern ist 4 Byte.
Nun soll ich berechnen wie groß der maximale Speicherbrauch der Funktion ist. Dafür hab ich den Else fall in Betracht gezogen : 4 Byte (Int32_) * 18 = 72bytes, da wir Blockgröße von 16 Byte haben -> 16*5 = 80 Bytes (wir müssen 80 Bytes reservieren, kleinster passender Block) . Nun müssen wir ja noch 4 Bytes für den zeiger auf b dazu addieren. Also 84Bytes. In den Lösungen wurden 2*4 Bytes für die Zeiger berechnet. Woher kommen die anderen 4 Bytes ? Wird am Anfang auch auf a ein Zeiger gesetzt? Ich kenne mich nicht sonderlich gut aus mit C, aber das wäre meine Vermutung. int32_t *a müsste doch ein zeiger auf a setzen.
Gruß