Ponteiros e memória

Ponteiros de função e callbacks

Callback permite a um algoritmo chamar lógica escolhida pelo caller.

O que é Ponteiros de função e callbacks?

Callback permite a um algoritmo chamar lógica escolhida pelo caller.

Passe comportamento para outra função.

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 square(int value) { return value * value; }
int apply(int value, int (*operation)(int)) { return operation(value); }

int main(void) {
    printf("%d\n", apply(6, square));
    return 0;
}
Saída esperada
36
C++
Executar →
main.cpp
#include <functional>
#include <iostream>

int apply(int value, const std::function<int(int)>& operation) {
    return operation(value);
}

int main() {
    int factor = 6;
    std::cout << apply(factor, [](int value) { return value * value; }) << '\n';
}
Saída esperada
36

Comparação entre C e C++

C usa tipo de function pointer explícito; C++ oferece lambdas e std::function com estado.

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.