Ponteiros e memória

Correção de const

const documenta o que não será modificado e bloqueia escritas acidentais.

O que é Correção de const?

const documenta o que não será modificado e bloqueia escritas acidentais.

Expresse dados somente leitura e ponteiros mutáveis.

Pontos importantes

  • Todo ponteiro deve apontar para objeto vivo compatível ou ser null.
  • Libere exatamente uma vez cada alocação própria.
  • Expresse ownership e const claramente.

Exemplos de código C e C++

C
Executar →
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;
}
Saída esperada
12
C++
Executar →
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';
}
Saída esperada
12

Comparação entre C e C++

Ponteiro para const protege o valor; ponteiro const não muda endereço. C++ acrescenta member functions const.

C

Ownership e limpeza são convenções manuais.

C++

Containers e RAII codificam ownership e limpeza no lifetime.

Exercícios práticos

Execute as duas versões e modifique-as para observar suas garantias.

  • Teste null e falhas de alocação.
  • Use AddressSanitizer e UndefinedBehaviorSanitizer.
  • Documente o ownership de cada ponteiro.