Punteros y memoria

Corrección de const

const documenta qué objetos no serán modificados y permite al compilador bloquear escrituras.

¿Qué es Corrección de const?

const documenta qué objetos no serán modificados y permite al compilador bloquear escrituras.

Expresa datos de solo lectura y punteros modificables.

Puntos importantes

  • Todo puntero debe apuntar a un objeto vivo compatible o ser null.
  • Libera exactamente una vez cada allocation propia.
  • Expresa ownership y const con claridad.

Ejemplos de código C y C++

C
Ejecutar →
main.c
#include <stdio.h>

int sum(const int *values, size_t count) {
    int total = 0;
    for (size_t i = 0; i < count; ++i) total += values[i];
    return total;
}

int main(void) {
    const int values[] = {2, 4, 6};
    printf("%d\n", sum(values, 3));
    return 0;
}
Resultado esperado
12
C++
Ejecutar →
main.cpp
#include <array>
#include <iostream>

int sum(const std::array<int, 3>& values) {
    int total = 0;
    for (int value : values) total += value;
    return total;
}

int main() {
    const std::array values{2, 4, 6};
    std::cout << sum(values) << '\n';
}
Resultado esperado
12

Comparación entre C y C++

Un puntero a const protege el valor; un puntero const no puede cambiar de dirección. C++ añade métodos const.

C

Ownership y limpieza son convenciones manuales.

C++

Los contenedores y RAII codifican ownership y limpieza en el lifetime.

Ejercicios prácticos

Ejecuta ambas versiones y modifícalas para observar sus garantías.

  • Prueba null y fallos de allocation.
  • Usa AddressSanitizer y UndefinedBehaviorSanitizer.
  • Documenta el ownership de cada puntero.