URL: https://linuxfr.org/forums/programmation-c/posts/fuite-de-m%C3%A9moire-avec-la-classe Title: Fuite de mémoire avec la classe Authors: WildChild Date: 2004年07月12日T04:36:57+02:00 Tags: Score: 0 J'ai une fuite de mémoire vraiment étrange dans un programme. J'ai une fonction que si j'éxécute son code, il n'y a aucun problème. Mais si j'exécute en boucle un appel de cette fonction c'est là que j'ai une fuite. Quelqu'un a une idée? Voici le code en question: void mIMEOnlineManager::SetUsername(unsigned int iUser, const char *cUsername) { mIMEDatabase mdCheckUser; string sMsg; if (!mdCheckUser.CheckUser(cUsername)) { sMsg = mIME::CreateDisconnectMsg(ERRUSERNOTFOUND); mscMainSocketManager->SendText(iUser, sMsg.c_str(), sMsg.length()); mscMainSocketManager->ShutdownConnection(iUser); } else { mIMEClientsListByUser[iUser]->sUsername = cUsername; sMsg = "" + mIME::CreateRandomString() + "" + mIME::CreateRandomString() + ""; mscMainSocketManager->SendText(iUser, sMsg.c_str(), sMsg.length()); } } Si je place le bloc if/else dans un while (true) ça ne fuit pas. Voici le code d'appel de cette fonction: if (!strcmp(xcParams[i], "username")) { momOnlineSystem->SetUsername(iCurrentDataUser, xcParams[i + 1]); } xcParams est de type XML_Char (C'est comme un pointeur char*, j'utilise expat pour parser du XML). Si je place ce if dans un while (true) la mémoire monte sans arrêt! Quelqu'un a une idée? Merci Gabriel Lavoie