Erros comuns em tempo de execução
Identifique e evite falhas de segmentação, estouros de buffer e vazamentos de memória.
Erros comuns em tempo de execução é uma aula grátis de C Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 3 aulas no total.
Erros comuns em tempo de execução em C
Erros comuns em tempo de execução em C
Erros em tempo de execução ocorrem quando um programa apresenta um comportamento inesperado, geralmente causando falhas.
Nesta lição, você aprenderá:
- Como ocorrem as falhas de segmentação e como corrigi-las.
- Como os estouros de buffer causam vulnerabilidades de segurança.
- Como os vazamentos de memória afetam o desempenho e como evitá-los.

O que é uma falha de segmentação?
O que é uma falha de segmentação?
Uma falha de segmentação ocorre quando um programa tenta acessar uma área da memória à qual não tem permissão de acesso.
Causas:
- Desreferenciar um ponteiro não inicializado ou NULL.
- Acessar a memória além dos limites de um vetor.
- Modificar uma área da memória somente para leitura.
Exemplo: falha de segmentação
Exemplo: falha de segmentação
Este programa causa uma falha de segmentação ao desreferenciar um ponteiro NULL.
#include <stdio.h>
int main() {
int *ptr = NULL;
printf("%d\n", *ptr); // Segmentation fault
return 0;
}Evitando falhas de segmentação
Evitando falhas de segmentação
Dicas para evitar falhas de segmentação:
- Sempre inicialize os ponteiros antes de usá-los.
- Verifique se um ponteiro é NULL antes de desreferenciá-lo.
- Verifique os limites dos vetores.
O que é um estouro de buffer?
O que é um estouro de buffer?
Um estouro de buffer ocorre quando os dados excedem o espaço de memória alocado.
Exemplo:
char arr[5]; gets(arr);
Isso pode causar um comportamento imprevisível e vulnerabilidades de segurança.
Exemplo: estouro de buffer
Exemplo: estouro de buffer
Este programa demonstra um estouro de buffer usando gets().
#include <stdio.h>
int main() {
char buffer[5];
printf("Enter a string: ");
gets(buffer); // Unsafe, may cause buffer overflow
printf("You entered: %s\n", buffer);
return 0;
}Evitando estouros de buffer
Evitando estouros de buffer
Para evitar estouros de buffer:
- Use
fgets()em vez degets(). - Valide os tamanhos dos dados de entrada antes de escrevê-los nos vetores.
- Use funções seguras para a memória, como
snprintf().
Vazamentos de memória
Vazamentos de memória
Um vazamento de memória ocorre quando a memória alocada não é liberada, resultando em desperdício de memória.
Causas:
- Esquecer-se de usar
free()depois demalloc(). - Substituir um ponteiro sem liberar a alocação antiga.
Resumo
Resumo
Nesta lição, você aprendeu:
- Como ocorrem as falhas de segmentação e como evitá-las.
- Como os estouros de buffer causam problemas de segurança.
- Como os vazamentos de memória desperdiçam recursos do sistema.
Em seguida, exploraremos estratégias de tratamento de exceções em C!

Perguntas Frequentes
A aula “Erros comuns em tempo de execução” é grátis?
Sim — o texto completo de “Erros comuns em tempo de execução” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 3 aulas no total.
O que vou aprender em “Erros comuns em tempo de execução”?
Identifique e evite falhas de segmentação, estouros de buffer e vazamentos de memória. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C Academy?
Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.
Quanto tempo leva a aula “Erros comuns em tempo de execução”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C Academy?
Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Depuração com GDB
- Erros comuns em tempo de execução
- Tratamento de exceções em C