Online C Compiler
Abrir no compilador

Edição didática em português. O código e suas saídas preservam o original.

Falha de segmentação em C

Localize acessos inválidos à memória e corrija a causa antes de executar novamente.

Abrir no compilador

Falha de segmentação em C
Localize acessos inválidos à memória e corrija a causa antes de executar novamente.

Uma falha de segmentação costuma indicar que o processo tentou acessar memória não permitida. Pode ocorrer por ponteiros nulos ou não inicializados, índices fora dos limites ou acesso a objetos liberados. Nem todo comportamento indefinido causa uma falha imediata.

Reduza o programa até reproduzir o problema. Revise o objeto apontado por cada ponteiro, sua duração e os índices utilizados. Verifique malloc antes de escrever e não retorne endereços de variáveis locais automáticas.

Em um ambiente que permita, compile com informações de depuração e AddressSanitizer; um depurador ajuda a inspecionar a pilha e as variáveis. A disponibilidade dessas ferramentas depende do serviço. Corrija o acesso inválido, não apenas o local onde aparece o sintoma.

Código C

#include <stdio.h>

int main(void)
{
    int values[] = {10, 20, 30};
    size_t count = sizeof values / sizeof values[0];

    for (size_t i = 0; i < count; ++i) {
        printf("values[%zu] = %d\n", i, values[i]);
    }

    return 0;
}
Abrir no compilador

Perguntas frequentes

Por que o código e a saída continuam em inglês?

Palavras-chave, identificadores e textos verificados pelos testes são preservados para não alterar o programa. As explicações e os controles estão traduzidos.