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

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
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
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
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
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