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. Γιαυτό και δεν σου χτυπάει και δουλεύει "σωστά".



