New et Delete

Tyroflan Messages postés 10 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 31 mars 2008 - 21 mars 2003 à 10:29
Tyroflan Messages postés 10 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 31 mars 2008 - 21 mars 2003 à 12:56
juste une question

si j'ai ceci :
int *p1;
...
main()
{
int pipi;
cin >> pipi;
p1 = new int [pipi];
...
delete[pipi] p1; ou bien delete[] p1;
}

MAIS

je procède ainsi ds mon progarmme:
int **bourse;

main()
{
int pipi;
cin >> pipi;
bourse = new int* [pipi];
for (int i=0;i<pipi;++i)
bourse[i] = new int [5];

// comment faire un delete correct pour bien deleter toutes mes variables crées ?
}

Merci de votre aide.
Xavier

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 mars 2003 à 11:14
Si tableau, ton cas:
delete[] ptr;
else delete type;
Vois que ici tu pouvais utiliser malloc(), la diff est que new sait appeler le constructeur si est une classe, ce qui n'est pas le cas. Le pendant de malloc est free(ptr);
BruNews, ciao...
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
21 mars 2003 à 12:27
Salut

Dans ton premier cas, comme te l'a dit Brunews, il suffit de delete[]
p1 new int[pipi];> delete[] pi;

Par contre , dans ton deuxième cas, il faut bien TOUT libérer
bourse = new int* [pipi];
for (int i=0;i juste une question
>
>
> si j'ai ceci :
> int *p1;
> ...
> main()
> {
> int pipi;
> cin >> pipi;
> p1 = new int [pipi];
> ...
> delete[pipi] p1; ou bien delete[] p1;
> }
>
> MAIS
>
> je procède ainsi ds mon progarmme:
> int **bourse;
>
> main()
> {
> int pipi;
> cin >> pipi;
> bourse = new int* [pipi];
> for (int i=0;i bourse[i] = new int [5];
>
> // comment faire un delete correct pour bien deleter toutes mes variables crées ?
> }
>
>
> Merci de votre aide.
> Xavier
0
Tyroflan Messages postés 10 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 31 mars 2008
21 mars 2003 à 12:56
Okay merci c'set ce que je voulais savoir, j'hésitais à mettre une boucle for pour vider les 2 "étages" en 2 fois...

Merci pour ta réponce.
Xav
0
Rejoignez-nous