Pointeurs ...

Résolu
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
Bonjour,

J'ai une petite question, c'est pas vraiment un probleme de code mais plutot de théorie. Imaginez qu'en global j'ai déclaré un pointeur vers une structure à qui j'alloue de l'espace mémoire avec HeapAlloc() que j'ai par exemple appelé lpGlobal. Ensuite dans une procédure, je crée un pointeur vers une structure, mais je ne l'initialise pas avec HeapAlloc mais je fais ceci :

Pointeur = lpGlobal

Il prend l'adresse de la structure, aucun soucis. Je voudrai savoir comment détruire Pointeur sans détruire l'espace mémoire occupé par lpGlobal.

J'arrive pas à bien m'exprimer lol. Posez moi vos questions si vous ne comprenez pas la mienne.

Merci :p

Apprendre le VB6

6 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Ben Pointeur n'a aucune mémoire alloué
Il pointe juste vers l'addresse de ta structure donc tu n'as rien à détruire je suppose
Tu peux toujours faire

Pointeur = NULL;

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Justement c'est la question que je me pose. Est-il utile de le détruire ? Occupe-t-il de la place mémoire ? Je pense comme toi que non mais il doit bien exister quelque part vu qu'il arrive à contenir une adresse non ?

Apprendre le VB6
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Un pointeur est tout simplement une variable qui contient l'adresse mémoire d'une autre variable. Dans ton cas il s'agit d'une structure. Pour rendre un pointeur inutilisable il suffit de lui affecter la valeur 0.
pointeur =0;
Dans ton code tu fais les tests nécessaires pour que ce pointeur ne soit pas utilisé tant qu'il est nul.
Ainsi, le pointeur est inutilisable mais la zone mémoire allouée est toujours accessible avec l'autre pointeur.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Un pointeur ne prend que 4 octets quelque soit la taille de la zone mémoire allouée.
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Merci, c'est la réponse que j'espérais, merci

Apprendre le VB6
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Si tu alloues ton pointeur dynamiquement, il faut le libérer. Dans le cas contraire, tu n'as rien a faire:


{

int * pointeur; <= RIEN a faire pour le libéré, il est détruit a la fin du bloc

}


{

int ** pointeur = new int*; <= un delete s'impose


delete pointeur;

}