Czy mogę skopiować ciąg znaków w pustym łańcuchu?

Załóżmy, że lubię to skopiować.

char str[] = "";
char *str2 = "abc";
strcpy(str, str2);
printf("%s", str);  // "abc"
printf("%d", strlen(str));  // 3

Dlaczego więc nie daje mi niezdefiniowanego zachowania lub powoduje awarię programu. Jakie są wady takiego postępowania?

questionAnswers(3)

yourAnswerToTheQuestion