Depuración: Programa recibió SIGSEGV señal, Fallo de segmentación.

Descripción del error

En los últimos programas de escritura Dev-C ++, el programa se puede compilar y ejecutar , es de lamentar que este programa recibe datos de entrada de teclado directamente espectáculos "Pulse cualquier tecla para continuar ..." las palabras que terminan en cada serie. Tras la puesta en descubierto el mensaje de error " programa recibió SIGSEGV, Segmentation Fault. "

  • Mensajes de error
    Mensajes de error
  • ejecución del programa tiro
    Dev-C ++
    principio pensé que era el compilador, VC ++ 6.0 ha sido reemplazado todavía existe el error.
    VC ++ 6.0

motivo del error

SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时由操作系统抛出的异常。

Confirmar algunos de los artículos relacionados y hacer varios intentos, la posible causa de errores acumulada de la siguiente manera:
1, puntero no inicializado

#include<stdio.h>
int main(){
	char *a;
	printf("%s",a);
	return 0;
}

2, la matriz no se ha inicializado, el subíndice de matriz fuera de límites elemento de matriz no existe, etc.

#include <stdio.h>
int main(){
char test[1];
printf("%c", test[10000]);
return 0;
}

3, cuando se utiliza el control de formato variable de las variables de salida printf irrazonable
ejemplo: intentar tipo de salida variable entero en un formato de% s

#include<stdio.h>
int main(){
	int a=1;
	printf("%s",a);
	return 0;
}

4, que se define en la función principal de la matriz de dos dimensiones es demasiado grande

#include<iostream>
using namespace std;
int main(){
	int a[1000][1000];
	int N,M;
	cin>>N>>M;
	for(int i=0;i<N;i++)
		for(int j=0;j<M;j++)
			cin>>a[i][j];
	cout<<a[0][0];
} 

Después de la investigación, que se encontraron en la definición principal de la matriz bidimensional de gran tamaño que condujo al error> ﹏ <.

soluciones

Para los cuatro posibles causas de SIGSEGV respectivamente las siguientes soluciones:
1, indicador, la matriz sin inicializar >>> inicializar el puntero, matriz
2, un índice de matriz está fuera de límites elemento de matriz >>> ausencia subíndices de verificación de matriz, prohibiendo límites de la matriz, el elemento de matriz no está a la asignación de
3, cuando se utiliza el control de formato variable de las variables de salida printf irrazonable >>> variable de salida formato de especificación (D %% S% D)
. 4, se define una función principal bidimensional grande >>> matriz antes de la matriz se moverá a las principales definiciones de funciones

Además, después de un intento, también encontró que la mayor función principal matriz bidimensional define como [720] [720].
Por lo que significa que
si se quiere definir más de esta matriz bidimensional debe ser definido en la función principal fuera de él! !

Artículo de referencia

Programa recibió SIGSEGV señal, Segmentación de error segmento de falla. Depuración
https://blog.csdn.net/oriel123/article/details/77715620

Publicado 18 artículos originales · alabanza won 40 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/seawaysyyy/article/details/103375635
Recomendado
Clasificación