Δημοσιεύτηκε: 21 Μαρ 2012, 21:41
από migf1
Όχι, δεν χαρακτηρίζεται ως read-only όλη η μνήμη γενικώς. Η μνήμη που καταλαμβάνει το char *str = "String" (αυτά τα 7 συνεχόμενα bytes δηλαδή) είναι read-only. Οπότε είτε πας να τα αλλάξεις απευθείας είτε μέσω άλλου δείκτη, δεν σε αφήνει ( seg-fault ).

Αν θες να μπορείς να αλλάξεις τα περιεχόμενα της μνήμης που καταλαμβάνει το str, τότε ΔΕΝ πρέπει να το ορίσεις και να το αρχικοποιήσεις ως δείκτη χαρακτήρων (char *), αλλά ως πίνακα χαρακτήρων (char []).

ΥΓ. Μπορείς να το ορίσεις σαν δείκτη χαρακτήρων, ΧΩΡΙΣ όμως να το αρχικοποιήσεις, οπότε σε αυτή την περίπτωση ΔΕΝ θα είναι read-only, αλλά για να το χρησιμοποιήσεις ως string θα πρέπει να δεσμεύσεις χειροκίνητα τη μνήμη που θα χρειαστείς για το μέγιστο μήκος του, με malloc()/calloc() ... δυναμική διαχείριση μνήμης... αλλά νομίζω δεν έχει μιλήσει ακόμα για αυτά το βιβλίο, έτσι δεν είναι;