📊 Capítulo 08: Ponteiros Brutos & Memória
Especialização em Sistemas com C++
🗺️ Anatomia do Ponteiro: Endereço vs Valor Apontado
flowchart LR
subgraph STACK ["Memória Stack"]
X["int x = 42\n(Endereço: 0x7ffd8a0)"]
PTR["int* p = &x\n(Endereço: 0x7ffd8a8 / Valor contido: 0x7ffd8a0)"]
end
PTR --> |"Desreferência: *p"| X
NOTE["&x -> Obtém o endereço físico da variável x\n*p -> Lê ou altera o valor gravado naquele endereço!"]
STACK -.-> NOTE
style STACK fill:#ede7f6,stroke:#512da8,stroke-width:2px
style X fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style PTR fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style NOTE fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
🎯 Slide 1: Aritmética de Ponteiros
-
Quando você faz
p + 1, o compilador não adiciona 1 byte! - Ele soma
sizeof(T)bytes (seinttem 4 bytes,p + 1avança 4 bytes na memória física para o próximo elemento do array).
🎯 Slide 2: As 4 Grandes Ciladas de Ponteiros Brutos
- Memory Leak: Alocar com
newe esquecer de chamardelete. - Dangling Pointer: Usar um ponteiro após o objeto apontado ter sido liberado.
- Double Free: Chamar
deleteduas vezes no mesmo endereço (crash de segurança). - Buffer Overflow: Gravar dados além dos limites do bloco alocado.
🎯 Slide 3: nullptr vs NULL / 0
- Sempre use
nullptr! NULLem C é uma macro para0(inteiro), o que causava ambiguidades graves na sobrecarga de funções (void foo(int)vsvoid foo(char*)). Onullptrtem tipo estático segurostd::nullptr_t.
🔗 Navegação do Capítulo 08
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim