andoh_wilfried Le 15/04/2006 à 19:14Edité par andoh_wilfried le 15/04/2006 à 19:23 Salut
Je voudrais savoir comment se passe le retour par une fonction d'un pointeur sur une structure .
Je suppose que l'on declare la structure localement dans la fonction puis l'on retourne son adresse.
Mais bon je reste perplexe puisque dans mon esprit toutes les variables locales seront detruite a la sortie de la fonction.
J'aimerai bien compremdre comment cela se passe concretement.
Edit :
Ce que je fais actuellement c'est que je passe en parametre l'addresse de ma structure pour que la fonction la modifie
Pen^2 Le 15/04/2006 à 19:21 il faut faire une allocation dynamique de ta structure (malloc / calloc / new etc) et retourner l'adresse, sinon effectivement l'espace memoire réservé pendant l'exécution de la fonction (sur la pile) est libéré => pointeur invalide
andoh_wilfried Le 15/04/2006 à 19:23Edité par andoh_wilfried le 15/04/2006 à 19:31 ok donc quand SymFindPtr retourne un SYM_ENTRY * c'est qu'il y a une variable globale en dessous.
Je pensait qu'il y avait une autre facon de faire.
Je fais une Librairie de Gestion de l'Estack Ti-Basic.
En fait je l'ai extrait de ExtLib et j'en ai profiter pour optimiser le code.
Le but c'est de parcourir une seule fois l'ESTACK pour referencer toutes les variables.
Les les elements des LIST/MATRIX sont indexes pour un acces plus rapide.
Je compte implementer le meme moteur que celui d'ExtLiB pour ce qui est
des boucles internes.
Je pense que je vais essayer d'en faire une Librairie dynamique, on vera.
Zeph Le 15/04/2006 à 19:26 C'est pas mal comme solution; si tu dois appeler malloc à chaque fois que tu utilises ta fonction pour que son retour soit valide, ça risque de poser de serieux problèmes de vitesse (sauf si tu n'utilises ta fonction une ou deux fois mais bon...)

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Zeph Le 15/04/2006 à 19:45 on utilise souvent plus une structure qu'on ne la crée ^^
(et puis il a lui-même dit "pour que ma fonction la modifie", donc a priori c'est pas une fonction de création)

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)