Δημοσιεύτηκε: 11 Απρ 2012, 00:31
από Ilias95
Γεια χαρά,

Τελείωσα το κεφάλαιο 17 και έχω κάποιες απορίες.
Τις παραθέτω.


1. Το παρακάτω είναι το prototype της malloc:
Κώδικας: Επιλογή όλων
void *malloc(size_t size);

Τι ακριβώς καταλαβαίνουμε από αυτό για τον τύπο που επιστρέφει η malloc;
Είναι ένας pointer σε τι; Είναι μήπως ένας pointer που μπορεί να δείχνει σε οποιονδήποτε τύπο;

2. Είναι η παρακάτω σωστή λύση για την 1η άσκηση της σελίδας 453;
Μορφοποιημένος Κώδικας: Επιλογή όλων
void *my_malloc(size_t size) 
{
void *s = malloc(size);
if (!s) {
puts("error: out of memory");
exit(EXIT_FAILURE);
}
return s;
}

Σε real-life εφαρμογές συνηθίζεται να γίνεται χρήση παρόμοιων συναρτήσεων;

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 στοιχεία.
Δουλεύει κατά τύχη ή συμβαίνει κάτι άλλο;