Allocation tableau à 2 dimensions de double - > PLANTAGE
Résolu/Fermé
A voir également:
- Allocation tableau à 2 dimensions de double - > PLANTAGE
- Double ecran - Guide
- Tableau croisé dynamique - Guide
- Whatsapp double sim - Guide
- Tableau ascii - Guide
- Tableau word - Guide
1 réponse
Aujourd'hui même plantage mais à la suppression des tableaux juste avant la fin du code, après delete [] participationIntervenants;
Voilà le code:
double ** sommeDue;
sommeDue = (double **)malloc(nombreIntervenants * sizeof(double *));
for(int i = 0; i < nombreIntervenants ; i++)
sommeDue[i] = (double *)malloc(nombreIntervenants * sizeof(double));
float * participationIntervenants = new float(nombreIntervenants);
for(int i = 0; i < nombreIntervenants ; i++)
{
cout << "Combien a paye en euros " << nomsIntervenants[i] << " ? " << endl;
cin >> participationIntervenants[i];
}
system("cls");
TRAITEMENT des données (je ne mets pas le code, cela ne plante pas dans cette zone)
Mais sachez que nombreIntervenants vaut 6, donc on a un tableau de 6*6 = 36 cases.
for(int i=0; i<nombreIntervenants; i++)
delete [] sommeDue[i];
delete [] participationIntervenants;
system("PAUSE");
return 0;
Lorsque je fais tourner en debug ça plante après delete [] participationIntervenants; et j'ai ce message qui s'affiche dans une fenêtre :
Windows a déclenché un point d'arrêt dans PartageDeFrais.exe.
Cela peut être dû à une défaillance du tas qui indique un bogue dans PartageDeFrais.exe ou l'une des DLL chargées.
Cela peut également être dû à l'appui sur la touche F12 lorsque PartageDeFrais.exe a le focus.
La fenêtre Sortie peut contenir des informations de diagnostic supplémentaires.
Je vous communique ce qu'il y a d'écrit dans la fenêtre de sortie de Visual:
'PartageDeFrais.exe' : Chargé 'C:\Users\Pierre\Documents\Visual Studio 2010\Projects\PartageDeFrais\Debug\PartageDeFrais.exe', Les symboles ont été chargés.
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\msvcp100d.dll', Les symboles ont été chargés.
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\msvcr100d.dll', Les symboles ont été chargés.
HEAP[PartageDeFrais.exe]: Heap block at 01127910 modified at 01127940 past requested size of 28
Windows a déclenché un point d'arrêt dans PartageDeFrais.exe.
Il me semble que c'était le même message que lors du précédent plantage.
Bref je suis un peu perdu.
Voilà le code:
double ** sommeDue;
sommeDue = (double **)malloc(nombreIntervenants * sizeof(double *));
for(int i = 0; i < nombreIntervenants ; i++)
sommeDue[i] = (double *)malloc(nombreIntervenants * sizeof(double));
float * participationIntervenants = new float(nombreIntervenants);
for(int i = 0; i < nombreIntervenants ; i++)
{
cout << "Combien a paye en euros " << nomsIntervenants[i] << " ? " << endl;
cin >> participationIntervenants[i];
}
system("cls");
TRAITEMENT des données (je ne mets pas le code, cela ne plante pas dans cette zone)
Mais sachez que nombreIntervenants vaut 6, donc on a un tableau de 6*6 = 36 cases.
for(int i=0; i<nombreIntervenants; i++)
delete [] sommeDue[i];
delete [] participationIntervenants;
system("PAUSE");
return 0;
Lorsque je fais tourner en debug ça plante après delete [] participationIntervenants; et j'ai ce message qui s'affiche dans une fenêtre :
Windows a déclenché un point d'arrêt dans PartageDeFrais.exe.
Cela peut être dû à une défaillance du tas qui indique un bogue dans PartageDeFrais.exe ou l'une des DLL chargées.
Cela peut également être dû à l'appui sur la touche F12 lorsque PartageDeFrais.exe a le focus.
La fenêtre Sortie peut contenir des informations de diagnostic supplémentaires.
Je vous communique ce qu'il y a d'écrit dans la fenêtre de sortie de Visual:
'PartageDeFrais.exe' : Chargé 'C:\Users\Pierre\Documents\Visual Studio 2010\Projects\PartageDeFrais\Debug\PartageDeFrais.exe', Les symboles ont été chargés.
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\msvcp100d.dll', Les symboles ont été chargés.
'PartageDeFrais.exe' : Chargé 'C:\Windows\SysWOW64\msvcr100d.dll', Les symboles ont été chargés.
HEAP[PartageDeFrais.exe]: Heap block at 01127910 modified at 01127940 past requested size of 28
Windows a déclenché un point d'arrêt dans PartageDeFrais.exe.
Il me semble que c'était le même message que lors du précédent plantage.
Bref je suis un peu perdu.
28 mars 2013 à 22:23
Sinon tu as oublié le delete pour sommeDue (tu ne l'as fait que sur les sommeDue[i])
Sinon, peux-tu poster ton code en entier et entre des balises "code" (à droite du bouton "souligné"). Parfois en C et en C++, l'erreur est fait ailleurs et ne se manifeste que bien plus tard.
28 mars 2013 à 22:59
Dans l'initialisation, il faut mettre des crochets et non des parenthèses.
float * participationIntervenants = new float [nombreIntervenants];
et non
float * participationIntervenants = new float (nombreIntervenants);
Par contre je n'ai pas encore l'explication pour ces dll non chargées (ntdll.dll, etc...voir plus haut dans mon message).
29 mars 2013 à 07:21
Pour les dll non chargés, c'est bizarre. Mais ce n'est pas du côté du C++ qu'il faut regarder.
Renomme ton fichier ntdll.dll, en ntdll.old et fais une récupération à partie du CD d'installation.
29 mars 2013 à 23:24
Sur certains forums on préconise un Sleep(5000) au début du programme pour qu'il ait le temps de charger les dll, ou d'éxécuter visual c++ express 2010 en mode administrateur.
Ni l'une ou l'autre des solutions n'ont changé quoique ce soit sur mon poste.
J'ai été regarder, les Dll ont l'air d'exister, c'est le Visual qui écrit ne pas parvenir à les charger apparemment...
Disons que tant que j'arrive à faire tourner mon projet, ça va...(même si j'aimerais comprendre je repousse ça à plus tard).
Quoiqu'il en soit merci pour vos réponses.
29 mars 2013 à 23:38
J'espère que tu trouveras quelqu'un pour t'aider :-).