Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Anthelme Anomalie floodiforme

Inscrit le: 28 Aoû 2007 Messages: 1857 Sujets: 93
|
Posté le: 22/07/08 22:45 Sujet du message: Découverte bizarre avec les call Destroy et variable |
|
|
Je vient de découvrir quelque chose je m'explique. Lorsque je supprime une variable avec un call Destroy... il détruit la variable ainsi que les donner qu'elle contient et les donner de la variable utiliser si il y en a une. Ce n'est pas très bien expliquer donc je vais mettre un exemple.
Quand je commence la partie et que j'appui sur 1 tout d'abord cela ne me donne rien et 2 seconde plus tard les nom de mes 3 unités apparaissent.
Ensuite je tape sur 2 puis a nouveau 1 mais la plus rien n'apparait, même en attendant plusieurs secondes et en ré-écrivant 1 plus rien n'apparait.
Je pense donc que un call Destroy détruit la variable mai aussi tout ce qui est a l'intérieur et donc même les variable qui peuvent la constituer. _________________
Ancien The.gosu |
|
Revenir en haut |
|
 |
Darkfeyt Floodeur prématuré
Inscrit le: 22 Nov 2007 Messages: 677 Sujets: 27 Spécialité en worldedit: Jamais sortir ses projets ?
|
Posté le: 22/07/08 23:13 Sujet du message: |
|
|
C'est parce que c'est un handle , explication:
Il existe 5 type principal (si j'en oubli pas):
-real(réel)
-integer(entier)
-string
-boolean
-handle(en gui ont en parle jamais)
Tout autre type est en réalité un handle , mais pourquoi sa change quelque chose ?
Car les handle sont des pointeur , si tu préfère des variable de type réel, entier , string et booléene enregistre directement la valeur , alors que les handles pointent vers un objet (tout se qui a une forme de struct/float (je sait plus comment sa se dit en langage "courant") , mais lorsque tu appelle une fonction qui détruit un (extend) d'handle , elle détruit l'objet et non la valeur dans la variable.
Exemple:
Ont crée une groupe d'unité , ont dit qu'il est a l'emplacement (handle) 5 , ont imagine que tu a 2 variable A et B.
A pointe déjà sur le groupe donc il a comme valeur 5.
Si tu fait "set B = A" alors sa mettra la valeur 5 à B et donc ne créera pas un autre groupe.
Donc si après tu détruit le groupe de B (d'emplacement 5) sur A le groupe existera pas non plu , car c'était le même groupe. (celui à l'emplacement 5) _________________
|
|
Revenir en haut |
|
 |
Anthelme Anomalie floodiforme

Inscrit le: 28 Aoû 2007 Messages: 1857 Sujets: 93
|
Posté le: 22/07/08 23:29 Sujet du message: |
|
|
Faut le préciser dans les tuto, en tout cas c'est vraiment stupide comme logique ... En gros pour que sa marche il faut 3 variables a b c
ou a = b
b = c
et on détruit c et donc b mais pas a
Sa marche sa ? _________________
Ancien The.gosu |
|
Revenir en haut |
|
 |
Ayane Bot administrateur

Inscrit le: 17 Sep 2007 Messages: 2012 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 22/07/08 23:54 Sujet du message: |
|
|
Non.
Prenons le type Point, notre processeur 32 bits ne peux pas gérer directement notre type point car celui-ci est composé de deux floats, c'est à dire 2 * 32 bits.
Créer un point consiste à demander au système d'allouer 64 bits pour pouvoir stocker les données du point; comme une variable ne peut faire que 32 bits, c'est l'adresse mémoire qui y est stockée. C'est pour cela qu'il ne faut pas oublier de détruire le point, c'est à dire désallouer les 64 bits de mémoire vive à partir de l'adresse mémoire qui est stockée dans notre variable.
ainsi si tu as
Set A = CreateGroup()
Dans A on a l'équivalent d'un entier qui correspond à l'adresse mémoire du groupe, imaginons 1356.
Si on fait
Set B = A
B aura alors pour valeur 1356.
Si on détruit le groupe à partir de la variable A alors on ne pourra pas y accéder à partir de B car cela n'aura pas copié le groupe.
Tu peux utiliser 100 variables cela n'y changera rien. _________________
|
|
Revenir en haut |
|
 |
Darkfeyt Floodeur prématuré
Inscrit le: 22 Nov 2007 Messages: 677 Sujets: 27 Spécialité en worldedit: Jamais sortir ses projets ?
|
|
Revenir en haut |
|
 |
Anthelme Anomalie floodiforme

Inscrit le: 28 Aoû 2007 Messages: 1857 Sujets: 93
|
Posté le: 22/07/08 23:59 Sujet du message: |
|
|
C'était juste une question mais c'est bon j'ai comprit et je trouve sa encore plus con ^^ _________________
Ancien The.gosu |
|
Revenir en haut |
|
 |
Ayane Bot administrateur

Inscrit le: 17 Sep 2007 Messages: 2012 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 23/07/08 00:10 Sujet du message: |
|
|
C'est une question de performances, on pourrait faire que cela fasse des copies à chaque fois, mais cela impliquerais que cela le fasse à chaque fois que l'on passe une variable en paramètre d'une fonction, ce qui ferait beaucoup d'accès mémoires pour accéder dans 98% des cas à la même donnée.
Si tu as une meilleure idée de conception n'hésite pas à la proposer. _________________
|
|
Revenir en haut |
|
 |
Anthelme Anomalie floodiforme

Inscrit le: 28 Aoû 2007 Messages: 1857 Sujets: 93
|
Posté le: 23/07/08 00:11 Sujet du message: |
|
|
Ajouter tout simplement un handle constant a déterminer quand on utilise la variable. _________________
Ancien The.gosu |
|
Revenir en haut |
|
 |
Ayane Bot administrateur

Inscrit le: 17 Sep 2007 Messages: 2012 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 23/07/08 00:24 Sujet du message: |
|
|
Il est constant, enfin tant que l'on ne change pas le groupe, je n'arrive pas à saisir ta pensée. _________________
|
|
Revenir en haut |
|
 |
Anthelme Anomalie floodiforme

Inscrit le: 28 Aoû 2007 Messages: 1857 Sujets: 93
|
Posté le: 23/07/08 02:00 Sujet du message: |
|
|
En gros un handle sur le qu'elle on peut pointer mais qui lui ne peut pas pointer sur quelque chose et que sont contenu soit constant et qui ne peut pas être supprimer _________________
Ancien The.gosu |
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 23/07/08 16:48 Sujet du message: |
|
|
The.gosu a écrit: | En gros un handle sur le qu'elle on peut pointer mais qui lui ne peut pas pointer sur quelque chose et que sont contenu soit constant et qui ne peut pas être supprimer |
Et comment tu définirais quelle valeur doit être fixée.
Ca n'a aucun sens.
Tient ca me fait penser, je vais faire une librairie de copy, ca sera utile (oupa). _________________
|
|
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: 24/07/08 16:01 Sujet du message: |
|
|
Output: Unrecoverable error, system fails. _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
 |
|