Динамические массивы в C без malloc?

Мне всегда было интересно, как я могу избежать этого:

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, copy, strlen(copy));
    return 0;
}

Массив char copy все равно выделяется, и программа работает нормально, распечатывая оригинал и копию . И Valgrind ни на что не жалуется.

Я думал, что динамические массивы были невозможны в C без malloc. Я ошибался?

20
задан Palec 15 March 2015 в 19:58
поделиться