petit probleme de c/cpp ... une exception que je ne comprends pas

petit probleme de c/cpp ... une exception que je ne comprends pas - C++ - Programmation

Marsh Posté le 22-02-2003 à 16:13:52    

voici donc mon bout de code ou se produit l'exception :
 

Code :
  1. switch(NetMess->MessType)
  2.    {
  3.    case MESSTYPE_RECV:
  4.     {
  5.      ProceedRawData(NetMess->Data, NetMess->cbData);
  6.      delete NetMess->Data;
  7.      delete NetMess;
  8.     } break;
  9.    case MESSTYPE_CO:
  10.     {
  11.      OnConnect();
  12.      // SetWaitableTimer
  13.     }
  14.     break;
  15.    case MESSTYPE_DECO:
  16.     {
  17.      Connect("irc.quakenet.org", 6667, hNewMess, TRUE);
  18.     } break;


 
l'exception se produit sur le break; de la ligne avant case MESSTYPE_DECO:
g donc executer le prog en pas a pas pour essayer de mieux comprendre
 
donc le prog a continuer a s'executer dans la procédure OnConnect (lorsque l'exception s'est produite, NetMess->MessType etait egal à MESSTYPE_CO), voici son code :
 

Code :
  1. void CIrcProto::OnConnect(void)
  2. {
  3. char* Mess;
  4. Mess = new char[strlen(Cfg.BotName)+6];
  5. wsprintf(Mess, "NICK %s", Cfg.BotName);
  6. SendMessCrLf(Mess);
  7. delete Mess;
  8. Mess = new char[strlen(Cfg.BotName)+6];
  9. wsprintf(Mess, "NICK %s", Cfg.BotName);
  10. SendMessCrLf(Mess);
  11. delete Mess;
  12. SendMessCrLf("USER WarBot WarBot WarBot :WarBot" );
  13. SendMessCrLf("PRIVMSG Q@CServe.quakenet.org :AUTH CDN-DeathLord xxxxxxxxxxx" );
  14. Mess = new char[strlen(Cfg.Chan)+strlen(Cfg.ChanKey)+10];
  15. wsprintf("JOIN %s %s", Cfg.Chan, Cfg.ChanKey);
  16. SendMessCrLf(Mess);
  17. delete Mess;
  18. }


 
et, donc, lorsque le prog est arrivé à wsprintf("JOIN %s %s", Cfg.Chan, Cfg.ChanKey); il a brusquement sauté au break de tout a l'heure pour faire son exception.
 
ah! oui, l'exception etait :  
 
Unhandled exception at 0x77e1020b in WarBot2.exe: 0xC0000005: Access violation writing location 0x004320a4.
 
et mon compilateur est vc++7 (.net)
 
si qq1 y comprend qqchose, merci de m'expliquer :)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 22-02-2003 à 16:13:52   

Reply

Marsh Posté le 22-02-2003 à 16:15:56    

Cfg.Chan et Cfg.ChanKey sont toutes 2 des chaines d'une dizaine de caractères chacunes et terminées par un 0


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 22-02-2003 à 16:18:57    

Faut mettre:
wsprintf(Mess,"JOIN %s %s", Cfg.Chan, Cfg.ChanKey);

Reply

Marsh Posté le 22-02-2003 à 16:23:25    

mouarf le boulet :p jme disais ke ca venait de la car en effet lorsque je supprimais cette ligne ca marchait bien ...
 
une superbe erreur d'inattention ca ...
 
mais par contre je ne comprends pas pourquoi l'exception n'est survenue qu'apres ? p-e un pb d'ecrasement de la mémoire par wsprintf qui a fait que le switch ne pouvait plus lire la mémoire dont il avait besoin comme il faut ...
 
merci bcp en tt ca :)


---------------
-( BlackGoddess )-
Reply

Sujets relatifs:

Leave a Replay

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