Я всегда задавался вопросом, как мне это избежать:
int main(int argc, char **argv) {
printf("%p %s %d\n", &argv[1], argv[1], strlen(argv[1]));
char copy[strlen(argv[1]) + 1];
strcpy(copy, argv[1]);
printf("%p %s %d\n", ©, copy, strlen(copy));
return 0;
}
Массив char copy
получает все равно, и программа работает нормально, распечатывая оригинал и копию. И Valgrind не жалуется ни на что.
Я думал, что динамические массивы невозможны в C без malloc. Был ли я неправ?