私はこのコードを持っています:
#define ABC "abc"
void main()
{
char *s = malloc(sizeof(char)*3);
printf("%p ", s);
s = ABC;
printf("%p ", s);
free(s);
}
これは出力です:
0x8927008 0x8048574 Segmentation fault (core dumped)
ご覧のとおり、文字列 s のアドレスは割り当て後に変更されます (これが free() が segfault を与える理由だと思います)。なぜ、どのようにこれが起こるのか、誰かが私に説明できますか? ありがとうございました!