Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Το 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

  • Απαντ. 46
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Πιθανότατα της περνάς σαν όρισμα σκέτο δείκτη αντί για διεύθυνση δείκτη, Πρέπει να δούμε τον κώδικα για περισσότερα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...