Δημοσιεύτηκε: 06 Σεπ 2011, 21:59
από Star_Light
Κατσε να τα συνδυασω τωρα και με τα 3 solutions που χεις δωσει στο buffer overflow στους ελεγχους....

Κώδικας: Επιλογή όλων
if(p1)
{ free(p1);
p1=NULL;
}


Λοιπον η if γενικα ελέγχει την έκφραση μέσα στην παρενθεση της , αν αυτη δωσει μη μηδενικη τιμή μπορει να εκτελεστει , επομενως αν υπάρχει ο p1 (αν υπάρχει εννοουμε να δειχνει σε εγκυρα δεδομενα) τοτε ελευθερωσε τον και θεσε τον μετα σε NULL. Ειμαι σωστος εδω???

επισης λες πως θα πρεπει να αρχικοποιουμε παντοτε τους δεικτες πριν τους χρησιμοποιησουμε... αρκετα λογικο μιας και ενας δεικτης μη αρχικοποιημενος μπορει να δειχνει οπουδηποτε ακομη και σε σημειο στην μνημη που μπορει να υπάρχουν χρησιμες εγγραφες του λειτουργικου συστηματος κτλπ επομενως καταλαβαινει κανεις αμεσως τις συνεπειες για την ασφαλεια και εδω. Επομενως παντα πρεπει να τους αρχικοποιουμε πριν τους χρησιμοποιησουμε ή να τους θέτουμε την τιμή NULL. Εκει δειχνουν παντα στο 0 δηλαδη? Αυτο που ειναι στην αρχη της μνημης?

Επισης λες πως πρεπει να ελεγχεις να μην ειναι NULL ενας δεικτης πριν τον χρησιμοποιησεις... επειδη αμα τον θεσεις μεσα σε μια printf ας πουμε για εκτυπωση θα φας segmentation fault??????

@σταματιου αμα εχεις αποριες στην υπερχειλιση ακομη πες να σου δωσω τον απλο κωδικα που εφτιαξα :P