Exception en C++

149_67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
L'exécution de ce programme m'affiche cette exception:

"Une exception non gérée du type 'System.AccessViolationException',
Informations supplémentaires : Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée"

Je veux savoir la cause de cette exeption,

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <iostream>
   using namespace std;
                                                                
int main()
 {
             
 float  **grille;
 int taille_gr=10;
    
    grille=new float*[taille_gr];
  
     
    for (int i=0; i <taille_gr; i++)
      {
        for (int j=0; j <taille_gr; j++)
        {
            grille[i][j]=((float) rand()) / (float) RAND_MAX;  
            float x=grille[i][j];
            printf("%f \n",x);
         }
}
   
 system("PAUSE");
 return EXIT_SUCCESS;   
}


Merci

1 réponse

  1. Utilisateur anonyme
     
    salut

    ton allocation du tableau n'est pas bonne

    ilf faut plutot


    float* new_arr = new float[taille_gr][taille_gr];

    tu n'avais alloué qu'une partie, donc forcément quand tu écrivais dans une partie non alloué, si l'emplacement mémoire où tu essaye d'écrire est locké, ca pète.

    Dis moi si ca suffit, sinon je le referai avec le compilateur.

    naga
    0
    1. 149_67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci pour la réponse,
      Mais le problème persiste encore :( même avec ta solution.
      0
    2. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      naga,
      new
      peut pas allouer des tableaux à plus d'une dimension; il faut d'abord initialiser le tableau de
      float*
      (les colonnes), puis chaque ligne, une à une:
      grille = new float*[taille_gr];
      for(int i = 0; i < taille_gr; ++i)
          grille[i] = new float[taille_gr];
      0
    3. Utilisateur anonyme
       
      autant pour moi, j'étais partis dans ce sens au départ (d'ailleurs il me manque une *, c'est
      float ** grille = ... 
      ) mais j'ai eu un doute si c'était obligatoire en ++ (l'habitude du # -_-') x]
      0