Exosouler Δημοσ. 23 Ιανουαρίου 2012 Μέλος Δημοσ. 23 Ιανουαρίου 2012 Το SAFEFREE(p) απλώς ελέγχει ο δείκτης p να ΜΗΝ είναι NULL πριν τον κάνει free() και τον θέτει ίσο με NULL. Αν σε μπερδεύει η υλοποίηση ως macro, μπορείς να το κάνεις συνάρτηση... > void safe_free( void **p ) { if ( !p || !(*p) ) return; free( *p ); *p = NULL; return; } αλλά τότε θα πρέπει να τη καλείς με τη διεύθυνση του p και όχι σκέτο τον p. Π.χ... > int n = 10; int *p = calloc( n, sizeof(int) ); ... /* κάνεις ότι έχεις να κάνεις με τον p */ ... safe_free( &p ); ... όταν το κάνω συνάρτηση μου βγάζει αυτή την ειδοποίηση. 68 C:\Users\Exosouler\Desktop\askshsh3\util.c [Warning] passing arg 1 of `SAFEFREE' from incompatible pointer type
migf1 Δημοσ. 24 Ιανουαρίου 2012 Δημοσ. 24 Ιανουαρίου 2012 Πιθανότατα της περνάς σαν όρισμα σκέτο δείκτη αντί για διεύθυνση δείκτη, Πρέπει να δούμε τον κώδικα για περισσότερα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα