S'il vous plait, ne me crucifiez pas pour celui-ci. J'ai décidé qu'il pourrait être bon d'utiliser un caractère car la chaîne que je voulais construire était de taille connue. Je suis également conscient que si timeinfo-> tm_hour renvoie quelque chose d'autre que 2 chiffres, les choses vont mal tourner. Cela dit, lorsque cette fonction retourne VIsual Studio va à mon encontre à propos de HEAP CORRUPTION. Qu'est-ce qui ne va pas? (Aussi, dois-je simplement utiliser un stringbuilder?)Pourquoi suis-je en train de subir une 'corruption de tas'?
void cLogger::_writelogmessage(std::string Message)
{
time_t rawtime;
struct tm* timeinfo = 0;
time(&rawtime);
timeinfo = localtime(&rawtime);
char* MessageBuffer = new char[Message.length()+11];
char* msgptr = MessageBuffer;
_itoa(timeinfo->tm_hour, msgptr, 10);
msgptr+=2;
strcpy(msgptr, "::");
msgptr+=2;
_itoa(timeinfo->tm_min, msgptr, 10);
msgptr+=2;
strcpy(msgptr, "::");
msgptr+=2;
_itoa(timeinfo->tm_sec, msgptr, 10);
msgptr+=2;
strcpy(msgptr, " ");
msgptr+=1;
strcpy(msgptr, Message.c_str());
_file << MessageBuffer;
delete[] MessageBuffer;
}
On dirait que vous oubliez le NUL à la fin de la chaîne. Au loin par un. – jrockway
@jrockway Est-ce que Message.c_str() ne va pas ajouter le caractère nul? – User2400
'/ moi prépare ongles et marteau' –