Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 12/03/09 20:59 Sujet du message: Impossibilité de nullifier une variable |
|
|
Prenons un exemple :
Jass: | function NewImmobileMonster takes integer id, real x, real y, real angle returns unit
local unit monster = CreateUnit( Player( 11 ), id, x, y, angle )
call SetUnitColor( monster, ConvertPlayerColor( 12 ) )
return monster
endfunction |
Il est impossible de nullifier "monster" puisque c'est la valeur qu'on retourne.
Il y a une solution toute bête à laquelle j'ai mis du temps avant de penser. Utiliser une variable globale :
Jass: | library Monsters
globals
private unit monster
endglobals
function NewImmobileMonster takes integer id, real x, real y, real angle returns unit
set monster = CreateUnit( Player( 11 ), id, x, y, angle )
call SetUnitColor( monster, ConvertPlayerColor( 12 ) )
return monster
endfunction
endlibrary |
Il devient inutile de nullifier "monster", car à chaque nouveau monstre créé, le pointeur est écrasé. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 12/03/09 21:48 Sujet du message: |
|
|
En effet, mais d'aprés ce que j'ai compris il n'est pas forcément nécessaire de nullifier les variables locales, quand on détruit l'objet référencé, du moment que l'on garde la trace dans une variable ou que la dernière variable (locale ou globale) pointant dessus a été nullifié.
Evidemment l'utilisation d'une globale est trés pratique car à chaque utilisation sa valeur sera écrasé, et donc pas de leak. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 12/03/09 22:21 Sujet du message: |
|
|
Si j'ai bien compris, le problème se situe dans le fait que l'objet n'est pas totalement détruit si au moins une variable pointe toujours dessus. _________________
|
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 12/03/09 23:47 Sujet du message: |
|
|
Tu n'as pas à te soucier de nullifier ta variable, tant que tu n'utilises pas de RemoveUnit dans ta fonction :> _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 14/03/09 17:29 Sujet du message: |
|
|
profet a écrit: | Tu n'as pas à te soucier de nullifier ta variable, tant que tu n'utilises pas de RemoveUnit dans ta fonction :> |
Alors là je suis très très dubitatif, quand war3 recycle une unité (end of decay), il recycle aussi la dernière variable qui pointait dessus sans avoir besoin de la nullifier ??!!
As tu testé ou est ce théorique ?
D'ailleurs c'est quoi le rapport avec RemoveUnit, c'est sensé recycler l'unité aussi j'ose espérer ...
Si incompréhension il y a, je donnerais un ex concret. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
|