Всегда ли это будет работать так, как ожидалось?
char *x;
if (...) {
int len = dynamic_function();
char x2[len];
sprintf(x2, "hello %s", ...);
x = x2;
}
printf("%s\n", x);
// prints hello
Как компилятор (в моем случае GCC) реализует массивы переменного размера в C и C++?
alloca()
— память, выделеннаяalloca()
, действительно действительна до конца объемлющей области function и не зависит от локальных областей. - person Kerrek SB   schedule 18.01.2013