Edición didáctica en español. El código y sus salidas conservan el original.
Fallo de segmentación en C
Localiza accesos inválidos a memoria y corrige su causa antes de volver a ejecutar.

Un fallo de segmentación suele indicar que el proceso intentó acceder a memoria no permitida. Puede deberse a punteros nulos o sin inicializar, índices fuera de límites o acceso a objetos liberados. No todo comportamiento indefinido produce un fallo inmediato.
Reduce el programa hasta reproducir el problema. Revisa el objeto al que apunta cada puntero, su duración y los índices usados. Comprueba malloc antes de escribir y no devuelvas direcciones de variables locales automáticas.
En un entorno que lo permita, compila con información de depuración y AddressSanitizer; un depurador ayuda a inspeccionar la pila y las variables. La disponibilidad de estas herramientas depende del servicio. Corrige el acceso inválido, no solo el lugar donde aparece el síntoma.
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 en el compiladorPreguntas frecuentes
¿Por qué el código y la salida siguen en inglés?
Las palabras clave, los identificadores y los textos que verifican las pruebas se conservan para no cambiar el programa. Las explicaciones y los controles están traducidos.