0Pricing
C Academy · Aula

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.
Erros comuns em tempo de execução — ilustração 1

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 de gets().
  • 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 de malloc().
  • 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!

Erros comuns em tempo de execução — ilustração 10

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

  1. Depuração com GDB
  2. Erros comuns em tempo de execução
  3. Tratamento de exceções em C
← Voltar para C Academy