C · Avançado · Inglês · Técnico
alloca
Função não padrão que reserva bytes na stack do chamador, liberados automaticamente quando a função retorna. É rápida, mas não avisa se a stack acabar.
Onde usar
Aparece em código antigo e em caminhos críticos que evitam malloc. Alocações grandes ou controladas pelo usuário levam a stack overflow.
Em código
#include <alloca.h>
char *tmp = alloca(256); // some no return
snprintf(tmp, 256, "id=%d", id);Exemplos
Avoid alloca with sizes that come from user input.
Evite alloca com tamanhos que vêm da entrada do usuário.
alloca is not in the C standard.
alloca não está no padrão C.
Cuidado
Chamar alloca em laços, pois a memória só é liberada quando a função retorna, e a stack cresce a cada volta.
Antônimos
malloc