typestar

Miembros de arreglo flexible en C

Un arreglo de largo desconocido como último miembro: una sola reserva para encabezado y datos.

#include <stdlib.h>
#include <string.h>

typedef struct {
    size_t len;
    char data[];
} Buffer;

Buffer *buffer_new(const char *text) {
    size_t n = strlen(text);
    Buffer *b = malloc(sizeof *b + n + 1);
    if (b == NULL) {
        return NULL;
    }
    b->len = n;
    memcpy(b->data, text, n + 1);
    return b;
}

void buffer_free(Buffer *b) {
    free(b);
}

Cómo funciona

  1. Los corchetes vacíos deben ir al final del struct.
  2. El sizeof del struct excluye la parte flexible.
  3. Reserva el encabezado más n elementos en una sola llamada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
324
Tokens
104
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 62 segundos.

Escribe este fragmento

Paso 5 de 5 en Uniones y disposición; paso 5 de 13 en Uniones, campos de bits y comportamiento indefinido.

← Anterior Siguiente →