我在程序中發現了錯誤,並決定編寫一個簡單的錯誤代碼,這會幫助我理解正在發生的事情。那就是:munmap_chunk():無效指針
#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;
}
的first()
功能是否工作正常,但second()
(完全free(out)
)genarates錯誤:
Error in `./a.out': munmap_chunk(): invalid pointer: 0x0000000000400714 *** ababAborted (core dumped)
我不明白爲什麼第一個功能是正確的,但第二不是。誰能解釋爲什麼?
您不能直接將字符串分配給char數組,請使用'strcpy(word,「ab」)'。 – gengisdave