Δημοσιεύτηκε: 12 Απρ 2012, 01:27
από mpekatsoula
Ilias95 έγραψε:
3. Το παρακάτω sample μου δίνει έξοδο 14:
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int *a;

a = malloc(3 * sizeof(int));
a[0] = 4;
a[1] = 3;
a[7] = 14;
printf("%d\n", a[7]);

return 0;
}

Πως γίνεται να δουλεύει σωστά; Αφού υποτίθεται ότι η a έχει δεσμευμένο χώρο για 3 στοιχεία.
Δουλεύει κατά τύχη ή συμβαίνει κάτι άλλο;


Όταν καλείς malloc, και για τόσο μικρές τιμές, δεσμεύεται παραπάνω χώρος (αν δεν κάνω λάθος, γύρω στα 4kb) κυριώς για performance issues. Γιαυτό και δεν σου χτυπάει και δουλεύει "σωστά".