«CRT обнаружил, что приложение написало в память« конец буфера ». Он падает, когда он прибывает в free
. Любая помощь приветствуется.Обнаружение кучи Обнаружено: после нормального блока
int messageFunction(char* message) {
char* sPtr = strstr(message,"Subject:");
char* cPtr = strstr(message,"Content:");
char* messageSubject = (char*) malloc(cPtr - sPtr - strlen("Subject:"))
char* messageContent = (char*) malloc(strlen(cPtr + strlen("Content:")))
strncpy(messageSubject,
stPtr + strlen("Subject:"),
cPtr - sPtr - strlen("Subject:"));
messageSubject[cPtr - sPtr - strlen("Subject:")] = '\0';
strncpy(messageContent,
cPtr + strlen("Content:"),
strlen(cPtr + strlen("Content:")));
...
free(messageSubject);
free(messageContent);
}
void main() {
char* message = "Subject:HelloWorldContent:MessageContent";
int result = messageFunction(message);
}
Спасибо, сэр, вы спасли мой день. Я конвертирую свой код из массива char в указатель на указатель и, как ошибка, сохранил длину массива, который должен быть увеличен на 1. +1 для +1 (нулевой терминатор) хэдз-ап. – ozanmuyes