typestar

¿Quién lo libera? en C

C no tiene destructores, así que la propiedad vive en los nombres y los comentarios.

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

/* Quien llama es dueño del resultado y debe llamar a name_free. */
char *name_new(const char *source) {
    size_t n = strlen(source);
    char *copy = malloc(n + 1);
    if (copy == NULL) {
        return NULL;
    }
    memcpy(copy, source, n + 1);
    return copy;
}

void name_free(char *name) {
    free(name);
}

/* Solo toma prestado: aquí no se libera nada. */
size_t name_length(const char *name) {
    return strlen(name);
}

Cómo funciona

  1. Una función cuyo nombre crea algo devuelve memoria en propiedad.
  2. Una función destroy pareja es la otra mitad del contrato.
  3. Los punteros prestados son const y la función llamada nunca los libera.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
436
Tokens
94
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

Paso 1 de 4 en Propiedad y errores; paso 15 de 25 en Punteros y memoria.

← Anterior Siguiente →