Delete matrice c++

olfamzoughi Messages postés 2 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 7 août 2009 - 31 juil. 2009 à 12:43
olfamzoughi Messages postés 2 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 7 août 2009 - 7 août 2009 à 18:07
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

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
31 juil. 2009 à 12:57
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.
0
olfamzoughi Messages postés 2 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 7 août 2009
7 août 2009 à 18:07
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.
0
Rejoignez-nous