Debug Assertion Failed

Fermé
tligwided - 12 juin 2013 à 22:06
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 18 juin 2013 à 00:24
Bonjour,



je fait mon code C++ mais il m'apparaît une faute dans le fichier.cpp
Microsoft Visual C++ Debug Library

Debug Assertion Failed!

Program: ...
File: c:\program files\microsoft visual studio10.0\vc\include\vector
Line: 932

Expression: vector subscript out of range

For information on how your program can cause an assertion
Failure, see the Visual C++ documentation on asserts.

et la faute m'apparait dans cette ligne ==>
for (unsigned int j=0;j < 10;j++) {
double temp5 = cL[i][j];
double temp6 = cH[i][j];
sigL.push_back(temp5);
sigH.push_back(temp6);
}
merci pour votre aide

2 réponses

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
Modifié par mamiemando le 16/06/2013 à 11:39
Hé bien comme le dit le message d'erreur tu accèdes vraisemblablement à une case en dehors de ton vecteur, sans doute parce que la valeur de i ou j te fait tomber en dehors de cL ou de cH.

Tu devrais afficher avec ton debugger ou écrire dans std::cout les valeurs de i, j, et les dimensions de cL et cH.

for (unsigned int j = 0; j < 10; j++) { 
  std::cout << "i = " << i << std::endl
    << " j = " << j  << std::endl
    << " cL.size() = " << cL.size() << std::endl
    << " cH.size() = " << cH.size() << std::endl;

  double temp5 = cL[i][j]; 
  double temp6 = cH[i][j]; 
  sigL.push_back(temp5); 
  sigH.push_back(temp6); 
} 


Par ailleurs et même si le problème ne vient pas de là, i et j devraient en toute rigueur être de type std::size_t.

Bonne chance
0
merci pour l'aide mais je viens de l'essayer mais ça reste la même problème
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
18 juin 2013 à 00:24
merci pour l'aide mais je viens de l'essayer mais ça reste la même problème

Ce que je t'ai indiqué ne résout rien, ça permet juste de comprendre où tu t'es trompé... à mon avis ta valeur de i est supérieure ou égale à cL.size() ou cH.size(), ou ta valeur de j est supérieur à cL[i].size() ou cH.size().

Bonne chance
0