> Une fonction réentrante alloue un espace distinct pour ses variables locales (en général dans la pile) à chaque appel.
pas seulement.
une fonction non-reentrante stock souvent les resultats dans une meme structure . donc si elle est appelée plusieurs fois au meme moment , les resultats peuvent etre ecrasés.
le fonctions autour de time sont l'exemple le plus frequent et le plus connues :
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
les _r sont reentrantes car on fournit un pointeur struct tm *result sur une zone memoire alouee pour y stocker le resultat.
[^] # Re: Un complément...
Posté par kesako . En réponse au message Questions d'exam. Évalué à 1.
pas seulement.
une fonction non-reentrante stock souvent les resultats dans une meme structure . donc si elle est appelée plusieurs fois au meme moment , les resultats peuvent etre ecrasés.
le fonctions autour de time sont l'exemple le plus frequent et le plus connues :
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
les _r sont reentrantes car on fournit un pointeur struct tm *result sur une zone memoire alouee pour y stocker le resultat.