Services webmasters
Partenaires
Jeux concours gratuits
 
Utiliser les arguments d'une fonction
<<<
Gestion de la mémoire dans une fonction Affecter une variable dans la table des symboles
>>>

11.5.1 Créer une fonction PHP 3
11.5 Développement PHP
11 Appendices
 Manuel PHP

Prototypes de fonctions
Arguments de fonctions
Fonctions à nombre d'arguments variable
Utiliser les arguments d'une fonction
->Gestion de la mémoire dans une fonction
Affecter une variable dans la table des symboles
Retourne une valeur simple
Retourner des valeurs complexes
Utiliser la liste des ressources
Utiliser la table des ressources persistantes.
Ajouter des directives de configuration à l'exécution

11.5.1.5 Gestion de la mémoire dans une fonction

Toute la mémoire nécessaire à une fonction doit être allouée avec emalloc() ou estrdup(). Ces fonctions ont le goût et l'odeur des fonctions C classiques malloc() et strdup(). La mémoire doit être libérée avec efree().

Il y a deux types de mémoire dans ce programme : la mémoire qui est retournée à l'analyseur, et la mémoire qui nécessaire pour le stockage temporaire dans la fonction. Lorsque vous assignez une chaîne dans une variable qui est retournée à l'analyseur, assurez-vous de bien allouer la mémoire avec emalloc() ou estrdup(). Cette mémoire ne doit JAMAIS être libérée, sauf si vous réécrivez votre original plus loin, dans la même fonction (mais ce n'est pas de la programmation propre).

Pour tous vos besoins en mémoire temporaire/permanante dont vous avez besoin dans vos fonctions/librairies, vous devez utiliser les fonctions emalloc(), estrdup() et efree(). Elles se comportent EXACTEMENT comme leurs homologues. Tout ce qui est créé avec emalloc() ou estrdup() doit être libéré avec efree() à un moment ou un autre, à moins que ce ne soit utile ailleurs dans le programme; sinon, il va y avoir une fuite de mémoire. La signification de "Elles se comportent EXACTEMENT comme leurs homologues" est que si vous libérez une variable qui n'a pas été créée avec emalloc() ou estrdup(), vous courez droit à au crash ("segmentation fault"). Soyez alors extrêmement prudent, et libérez toute votre mémoire inutilisée.

Si vous compilez avec "-DDEBUG", PHP 3 affichera la liste de tous les appels à emalloc() et estrdup() mais jamais à efree() lorsque celui-ci intervient dans un script spécifié.

<< Gestion de la mémoire dans une fonction >>
Utiliser les arguments d'une fonction Créer une fonction PHP 3 Affecter une variable dans la table des symboles
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -