Ich habe den Fehler in meinem Programm entdeckt und beschlossen, einen einfachen zu schreiben, der mir helfen würde zu verstehen, was vor sich geht. Hier ist sie:munmap_chunk(): ungültiger Zeiger
#include <stdio.h>
#include <stdlib.h>
char * first()
{
char * word = malloc(sizeof(char) * 10);
word[0] = 'a';
word[1] = 'b';
word[2] = '\0';
return word;
}
char * second()
{
char * word = malloc(sizeof(char) * 10);
word = "ab";
return word;
}
int main()
{
char * out = first();
printf("%s", out);
free(out);
out = second();
printf("%s", out);
free(out);
return 0;
}
Die first()
Funktion ordnungsgemäß funktioniert, aber der second()
(genau der free(out)
) genarates Fehler:
Error in `./a.out': munmap_chunk(): invalid pointer: 0x0000000000400714 *** ababAborted (core dumped)
Ich verstehe nicht, warum die erste Funktion ist richtig, aber die Das zweite ist nicht. Könnte jemand erklären warum?
Sie können einem char-Array nicht direkt einen String zuweisen, verwenden Sie 'strcpy (word," ab ")'. – gengisdave