「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數組轉換爲char指針,並且錯誤保留了數組長度,必須將+1增加爲+1(空終止符)。 – ozanmuyes