ExpertiDict

C · Avançado · Português · Técnico

array de tamanho variável

/aˈhej dʒi taˈmɐ̃.ɲu vaɾiˈa.vew/substantivo

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

Veja também

Todos os termos de C