以下はコードのスニペットです。
int main(void) {
char sizing[] = "manshcanshcnams cndhan sndhcna snshans";
char *xyz = malloc(sizeof(char));
printf("%ld\n",sizeof(xyz));
xyz = sizing; // IT SHOULD FAIL HERE
printf("Fail %s\n",xyz );
return 0;
}
ご覧のとおり、xyz に保持できるメモリよりも多くのメモリを割り当てようとしています。しかし、出力は失敗しません。それは未定義の動作ですか?