ExpertiDict

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

flexible array member

/ˈflɛk.sə.bəl əˈɹeɪ ˈmɛm.bɚ/substantivo

Último membro de uma struct declarado como array sem tamanho, como char dados[]. Permite alocar a struct e seus elementos variáveis em um único bloco de memória.

Onde usar

Muito usado em buffers e strings com cabeçalho: malloc(sizeof(struct) + n * sizeof(elem)). Um único free libera tudo.

Em código

struct buf {
  size_t n;
  char dados[]; // flexible array member
};
struct buf *b = malloc(sizeof *b + 16);
b->n = 16;

Exemplos

A flexible array member keeps the header and the data in one allocation.

Um flexible array member mantém o cabeçalho e os dados em uma só alocação.

It must be the last member of the struct.

Ele precisa ser o último membro da struct.

Cuidado

Esquecer que sizeof da struct ignora o array flexível; o tamanho total é calculado à mão ao alocar.

Veja também

Todos os termos de C