C · Avançado · Português · Técnico
array de tamanho variável
Array local cujo tamanho é definido em tempo de execução, como int v[n]. Foi introduzido no C99, tornou-se opcional no C11 e vive na stack.
Onde usar
Parece prático, mas um n grande estoura a stack sem aviso, e não há como detectar a falha. Muitos guias de estilo, incluindo o do kernel Linux, o proíbem.
Em código
void f(size_t n) {
int v[n]; // VLA: tamanho só conhecido aqui
for (size_t i = 0; i < n; i++)
v[i] = 0;
}Exemplos
Troque esse array de tamanho variável por malloc, o n vem do usuário.
O MSVC nunca suportou array de tamanho variável.
Cuidado
Confundir com um array alocado por malloc: o array de tamanho variável some ao sair do escopo e não pode ser devolvido.
Sinônimos
VLA