Expression: BLOC_TYPE_IS_VALIDE????

Expression: BLOC_TYPE_IS_VALIDE???? - C++ - Programmation

Marsh Posté le 09-12-2002 à 12:01:00    

j'ai un projet à remettre pour 16H et j'ai une de ces fucking erreur à l'execution ke je sais pas du tout d'où elle vient??? :fou:  
 
si kelk'un peu m'aider ce s'rai trop cool
http://www.imchat.be/test.gif
 
(compile avec VC++ 6.0 (j'utilise fstream.h; je sais pas si ça à kelke chose à voir) )

Reply

Marsh Posté le 09-12-2002 à 12:01:00   

Reply

Marsh Posté le 09-12-2002 à 12:03:09    

je crois que ton screenshot est bien placé pour le concours du screenshot le plus dégueux de l'année. C'était tout juste, il restait à peine trois semaines pour 2002.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 09-12-2002 à 12:03:29    

:ouch:  (vive les picts de kalité :ange: )

Reply

Marsh Posté le 09-12-2002 à 12:04:02    

lol, c'est ke je suis à la bourre....

Reply

Marsh Posté le 09-12-2002 à 12:04:18    

Comment veux tu qu'on t'aide si tu postes pas ton code ? :sarcastic:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-12-2002 à 12:11:55    

ben me disait ke c'tai p'têtre une erreur tipike...?
 
(le prob c'est ke ce'st pas mega commenté)
 

Code :
  1. typedef unsigned short Piece;
  2. #include<fstream.h>
  3. #include<iostream.h>
  4. unsigned Load_next_unsigned(ifstream& file);
  5. //-----------------------------------------------------------------Graphe<Couloir>-------------------------------------------------
  6. template <class Couloir>
  7. class Graphe {
  8.    Piece N_Piece;
  9.    unsigned N_Couloir;
  10.    unsigned N_Escalier;
  11.    Piece *Escalier;
  12.    Couloir **M;
  13. public:
  14.    Graphe (ifstream&);
  15.    ~Graphe ();
  16.    Piece NB_PIECES () const { return N_Piece; }
  17.    unsigned NB_COULOIRS () const { return N_Couloir; } //unisgned != Piece  (NB_COULOIRS <= NB_PIECE^2)
  18.    Piece NB_ESCALIERS () const { return N_Escalier; }
  19.  
  20.    void Ins_Couloir (Piece s, Piece t, Couloir val = 1) { if(s<t) M[s][t] = val; else if(t>s && t<N_Piece) M[t][s]=val;}
  21.    void Ins_Escalier (Piece s, Piece t) {Escalier[s]=t;}
  22.    void Sup_Couloir (Piece s, Piece t) { M[s][t] = 0; }
  23.  
  24.    Piece Voisin_1er (Piece) const;
  25.    Piece Voisin_Svt (Piece, Piece) const;
  26.    bool Est_Piece (Piece s) const { return s < N_Piece; }
  27.    bool  Est_Couloir (Piece s, Piece t) { return ((s<t) ? M[s][t] : (t>s && t<N_Piece) ? M[t][s] : false;) }
  28.    Couloir POID (Piece s, Piece t) { return ((s<t) ? M[s][t] : (t>s && t<N_Piece) ? M[t][s]); }
  29.    Piece ESACLIER (Piece s) { return Escalier[s]; }   
  30.  
  31. };
  32. template <class Couloir>
  33. Graphe<Couloir>::Graphe (ifstream& file) : N_Piece(Load_next_unsigned(file))/*3*/, N_Couloir(Load_next_unsigned(file))/*4*/, N_Escalier(Load_next_unsigned(file))/*5*/, M(new Couloir*[N_Piece]), Escalier(new Piece[N_Piece]) {
  34.    for (Piece s=0; s<N_Piece-1; ++s) {
  35.       M[s] = new Couloir[s+1];
  36.       for (Piece t=0; t<s+1; ++t) M[s][t] = 0;
  37.  
  38.    }
  39.    for (Piece i=0; i<N_Piece; ++i) Escalier[i]=0;
  40. }
  41. template <class Couloir>
  42. Graphe<Couloir>::~Graphe () {
  43.    for (Piece s=0; s<N_Piece; ++s) delete[] M[s];
  44.    delete[] M;
  45.    delete[] Escalier;
  46. }
  47. template <class Couloir>
  48. Piece Graphe<Couloir>::Voisin_1er (Piece s) const {
  49.    Piece t = 0;
  50.    for ( ; t<s && !M[s][t]; ++t);
  51.    if(t=>s){
  52.    if(t==s) t++;
  53.    for(;t<N_Piece && !M[t][s]; ++t);
  54. }
  55.    return t;
  56. }
  57. template <class Couloir>
  58. Piece Graphe<Couloir>::Voisin_Svt (Piece s, Piece t) const {
  59.    for (++t ; t<s && !M[s][t]; ++t);
  60.    if(t=>s){
  61.    if(t==s) t++;
  62.    for(; t<N_Piece && !M[t][s]; ++t);
  63.    }
  64.    return t;
  65. }
  66. //I
  67. template <class Couloir>
  68. class Etage: public Graphe<Couloir> {
  69. Piece JBgirl;
  70. unsigned *difficulte;
  71. unsigned Pieces_Distrib;
  72. public:
  73. Etage (ifstream&, unsigned, bool);
  74.    ~Etage () { delete[] difficulte; };
  75.    unsigned NB_PIECES_DISTRIB() {return Pieces_Distrib;}
  76.  
  77.    unsigned DIFFICULTE  (Piece s) const { return difficulte[s]; }
  78.    Piece JBGIRL (Piece s) const { return JBgirl; }
  79.  
  80. };
  81. template<class Couloir>
  82. Etage<Couloir>::Etage (ifstream& file, unsigned n, bool Last_Graphe): Graphe<Couloir>(file), JBgirl(Load_next_unsigned(file)-1/*6*/), Pieces_Distrib(n), difficulte(new unsigned[NB_PIECES()]){
  83. cout<<endl<<"NB_PIECES() "<<NB_PIECES()<<endl;            //***Test
  84. for(unsigned i=0; i<NB_PIECES(); i++) difficulte[i]=Load_next_unsigned(file)/*6+N_Piece*/;
  85. cout<<endl<<"NB_COULOIRS() "<<NB_COULOIRS()<<endl;           //***Test
  86. for(unsigned j=0; j<NB_COULOIRS(); j++){
  87.  unsigned a,b,c;
  88.  a=Load_next_unsigned(file);/*6+N_Piece+3*N_Couloirs-2*/
  89.  b=Load_next_unsigned(file);/*6+N_Piece+3*N_Couloirs-1*/
  90.  c=Load_next_unsigned(file);/*6+N_Piece+3*N_Couloirs*/
  91.  Ins_Couloir (a-(1+Pieces_Distrib),b-(1+Pieces_Distrib),c-(1+Pieces_Distrib));
  92. }
  93. cout<<endl<<"NB_ESCALIERS()= "<<NB_ESCALIERS()<<endl;          //***Test
  94. if(!Last_Graphe){
  95.  for(unsigned k=0; k<NB_ESCALIERS(); ++k){
  96.   unsigned a,b;
  97.   a=Load_next_unsigned(file);/*6+N_Piece+3*N_Couloirs+2*N_Escalier-1*/
  98.   b=Load_next_unsigned(file);/*6+N_Piece+3*N_Couloirs+2*N_Escalier*/
  99.   Ins_Escalier(a-(1+Pieces_Distrib),b-(1+Pieces_Distrib+NB_PIECES()));
  100.  }
  101. }
  102. else{
  103.  for(unsigned k=0; k<NB_ESCALIERS(); ++k){
  104.   unsigned a=Load_next_unsigned(file);/*6+N_Piece+3*N_Couloirs+2*N_Escalier-1*/
  105.   Ins_Escalier(a-(1+Pieces_Distrib), 1);   //1==sentinelle
  106.  }    
  107. }        
  108.  
  109. }
  110. //-----------------------------------------------------------------Prison<Couloir>-------------------------------------------------
  111. template <class Couloir>  
  112. class Prison{
  113. unsigned N_Graphe;
  114. unsigned N_TOTAL_Piece;
  115. Piece First;
  116. Etage<Couloir>** V;
  117. public:
  118. Prison(ifstream& file): N_Graphe (Load_next_unsigned(file)/*1*/), V(new Etage<Couloir>* [N_Graphe]) {
  119.  First=Load_next_unsigned(file/*2*/);
  120.  --First;
  121.  for(unsigned i=0; i<N_Graphe; i++){
  122.   V[i]=new Etage<Couloir> (file, (i?(V[i-1]->NB_PIECES_DISTRIB()+V[i-1]->NB_PIECES()) :0), (i==N_Graphe-1));
  123.  }
  124. }  
  125. ~Prison() { for(unsigned i=0; i<N_Graphe; i++) delete[] V[i]; delete[] V;}
  126. };
  127. //---------------------------------------------------------------------------------------------------------------------------
  128. unsigned c=0;               //***Test
  129. unsigned Load_next_unsigned(ifstream& file){
  130. if(!file.eof()){                  
  131.  unsigned res;
  132.  file>>res;
  133.  cout<<++c<<"-"<<res<<endl;          //***Test
  134.  return res;
  135. }
  136. cerr<<"eof"<<endl;         //on est jamais trop prudent
  137. return 0;
  138. }
  139. int main(char** argv, int argc)
  140. {
  141. char* inputfile_name = "exempleJames.txt";   //char* inputfile_name = argv[0];
  142. ifstream file (inputfile_name);    
  143. if (!file) {
  144.          cerr << "erreur ouverture en lecture : "<< inputfile_name << endl ;
  145. }
  146.  
  147. Prison<unsigned short> JB0075 (file);
  148. file.close();
  149. int p;
  150. cin>>p;
  151. return 1;
  152. }

Reply

Marsh Posté le 09-12-2002 à 12:12:44    

en fait le prob est à la fermeture de mon main()
 
exemplejames.txt:
3
1
4
3
2
2
50
100
25
10
1 2 5
2 3 10
2 4 9
3 9
4 7
5
4
2
8
40
80
40
50
30
7 8 8
8 9 5
5 8 6
6 8 9
5 10
6 11
3
3
1
11
15
20
30
10 11 12
10 12 2
11 12 15
12


Message édité par peak le 09-12-2002 à 12:17:04
Reply

Marsh Posté le 09-12-2002 à 13:20:00    

ben t'as juste une putain d'assertion qui merde c'est tout. tu sais lire?


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 13:37:20    

Vive la convivialité!!!
Si ça te fait chier de répondre aux kestions personne te force!!
(ce style de réponses je m'en passerai!!)
 
je cherchai juste à avoir des renseignements sur  
"BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
et sur le style de couilles ki peuvent causer un problème d'assertion...

Reply

Marsh Posté le 09-12-2002 à 13:40:53    

ben tu vas dans le fichier indiqué à la ligne donné et tu réfléchis comment ca se fait que l'assertion echoue (en l'occurence que truc->chose soit egale à 0)
 
les assert, c'est bete et mechant, rien a dire de plus dessus. c'est de la programmation dégueulasse qui ne doit etre utiliser qu'en phase dev, apres le code doit etre blindé et tous les assert dégagés


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 13:40:53   

Reply

Marsh Posté le 09-12-2002 à 13:45:31    

ok,  
je prefer ça! :)

Reply

Marsh Posté le 09-12-2002 à 14:04:24    

Taz@PPC a écrit :

ben tu vas dans le fichier indiqué à la ligne donné et tu réfléchis comment ca se fait que l'assertion echoue (en l'occurence que truc->chose soit egale à 0)


mais là en l'occurence, il se trouve que l'assertion est dans un fichier source qui ne lui appartient pas (surement un projet MFC, qui sont gavées d'ASSERT et autres ASSERT_VALID() )
 
hélas, la seule solution est effectivement de regarder la cause qui fait que l'assertion échoue, et sur un fichier qui ne t'appartient pas, c'est une merde sans nom...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-12-2002 à 14:06:43    

:fou: j'y peux rien si les mecs de gros$oft utilsie meme pas le mode release de leur compilo buggé


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 14:14:39    

m'engueule po, j'y suis pour rien moi [:serial coder]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-12-2002 à 14:15:16    

Ca doit être pour terminer le debuggage auquel les acheteurs de leurs outils participent. Les remarques sont sagement exploitées (test en vrai grandeur) et permet de préparer la mouture de la prochaine version qui corrige les défauts de la précédente (ou prépérer un ServicePack).
?

Reply

Marsh Posté le 09-12-2002 à 15:00:10    

bon ben, je me resigne... avec un peu de bol ils le verront pas  :whistle:  
 
 
 

Reply

Marsh Posté le 09-12-2002 à 15:08:20    

carbon_14 a écrit :

Ca doit être pour terminer le debuggage auquel les acheteurs de leurs outils participent. Les remarques sont sagement exploitées (test en vrai grandeur) et permet de préparer la mouture de la prochaine version qui corrige les défauts de la précédente (ou prépérer un ServicePack).
?

nan je crois po  :non:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 15:31:59    

C'était ma rubrique langue de vipère. :ange:

Reply

Marsh Posté le 09-12-2002 à 16:27:06    

peak a écrit :

bon ben, je me resigne... avec un peu de bol ils le verront pas  :whistle:  
 
 
 


:heink:
je veux pas te faire peur, mais une assertion qui échoue en mode debug conduit le plus souvent à une segmentation fault ou à une lecture/écriture dans une zone mémoire interdite en mode release !
et là, pas bon du tout !!! je serais toi, je me démerderais à corriger ça !!


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 10-12-2002 à 02:23:16    

Ça veut dire que tu passe à une fonction système une zone mémoire corrompue.
Il n'y a pas de doute, ton programme écrases, mélange, ou n'alloue pas la mémoire.
 
1) Clique Retry
2) Active menu "View/Debug Windows/Call Stack"
3) Double cliques dans cette fenêtre la plus haute fonction appartenant à ton application.
 
Tu sais maintenant depuis où se fait un appel corrompu.
Reste à placer des points d'arrêts, assertions, traces...
 
PS: Si tu programmes comme tu postes des images, j'ai peur.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed