Simple Question

tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 3 mars 2005 à 19:14
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 3 mars 2005 à 19:40
Bonjour a tous,
le code suivant:

int *i;
for (int a=0;a<nbelem;a++)
{
i=new int;
.
.
.
}

me créera un nouveau int et detruira l'ancien.....?
Je suis plus sûr
Merci de votre aide.

2 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
3 mars 2005 à 19:36
int *i <<<< Ca c'est un pointeur



Pointeur = Zone mémoire reperé par son adresse



i = new int <<<<< Tu affecte une taille a ta zone
mémoire. Ici en l'occurence tu lui affecte la taille d'un int soit 4
octets.



Tu aurais pu faire i = new int[4] : ca t'aurais affectai une zone mémoire de 8*4=32 octets.



La directive ne permet d'affecter une taille mémoire et donc d'initialiser ton pointeur.



A la fin de ton code n'oublie pas de libérer l'espace mémoire alloué a l'aide de la directive delete



Exemple :

delete i;



Shell
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
3 mars 2005 à 19:40
Merci de ta réponse si rapide,
en fait je m'etait enmbrouillé avec l'opérateur delete.
C vrai que je peu le placer a la fin de ma boucle for.

ce qui me donnerra ça:(tout simplement)
int *i;
for (int a=0;a<nbelem;a++)
{
i=new int;
.
.
.
delete i;
}
0
Rejoignez-nous