Δημοσιεύτηκε: 08 Απρ 2012, 15:26
από migf1
Στην 1η περίπτωση, με την αρχικοποίηση που κάνεις βάζεις τον p να δείχνει σε read-only μνήμη (δηλαδή στο string-literal με το οποίο τον αρχικοποιείς).

Στη 2η περίπτωση κάνεις άλλο πράγμα: τον ορίζεις χωρίς αρχικοποίηση (btw προσπάθησε να το κάνεις συνήθεια να μην αφήνεις δείκτες χύμα, τον συγκεκριμένο αρχικοποίησέ τον σε NULL) και κατόπιν τον βάζεις να δείχνει σε μια περιοχή μνήμης που δημιουργείς δυναμικά μέσα στη συνάρτηση.

ΥΓ. Πρέπει πάντα να ελέγχεις αν τα malloc() πέτυχαν ( να μην επιστρέφουν NULL δηλαδή) πριν κάνεις οτιδήποτε άλλο στη μνήμη που σου επιστρέφουν. Επίσης, για κάθε πετυχημένο malloc() πρέπει να κάνεις ένα αντίστοιχο free() πριν τερματίσεις το πρόγραμμά σου. Στην προκειμένη περίπτωση πρέπει να κάνεις free(p).