Delete matrice c++

Signaler
Messages postés
2
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
7 août 2009
-
Messages postés
2
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
7 août 2009
-
bonjour
Je suis débutante en c/c++.
j essaye de supprimer une matrice de taille 2*Nb_pt par le code suivant:

/////////////////////////////////////////////////////////////////////
using namespace std;

int main(int argc, char *argv[])
{
int Nb_pt=200;
double ** matrice;
matrice = new double * [Nb_pt];
for (int i=0; i<Nb_pt; i++) {
matrice [i] = new double [2];
}
for (int i=0; i<Nb_pt; i++){
matrice [i][0]=2;
matrice [i][1]=2;
}
for (int i=0; i<Nb_pt; i++)
{
printf("matrice[][]%d",matrice[i][0]);
printf("matrice[][]%d\n",matrice[i][1]);
}

for (int i=0; i<Nb_pt; i++)
{
delete[] matrice[i];
}

delete matrice;
for (int i=0; i<Nb_pt; i++)
{
printf("matrice[][]%f",matrice[i][0]);
printf("matrice[][]%f\n",matrice[i][1]);
}
return EXIT_SUCCESS;
}
////////////////////////////////////////////////////////////////////////
Lorsque j affiche les valeurs de ma matrice apres delete je trouve que ces valeurs sont encore sauvegardes.
je compile avec gcc sur linux
merci de bien vouloir m aider.

2 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut

for (int i=0; i<Nb_pt; i++)
delete[] matrice[i];
delete []matrice;

Attention, une fois que tu as supprimé ta matrice elle est peut être présente en mémoire mais tu n'as plus le droit d'écrire sur cette zone...
C'est juste parce que les autres programme n'ont pas eu le temps d'écrire dessus que tu obtiens les mêmes valeurs.

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
2
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
7 août 2009

Bonjour
Merci pour m'avoir répondu aussi vite la dernière fois.
En fait, le problème que j'ai réellement dans mon code est qu'il génère une exception de type std::bad_alloc:
en fait, mon traitement se fait sur une base d images mais au bout d'un cetain nombre d'image, il génère cette exception.
g essayé de faire un delete sur toutes les matrices et les pointeurs que je crée (comme g montré dans mon message précédent) mais ça marche pas.
J'aimerai savoir qu'elles sont les procédures que je puisse faire pour résoudre mon problème.
Merci d'avance.