Red de conocimiento informático - Conocimiento del nombre de dominio - Error de aplicación, ¿qué significa 0×000000000?

Error de aplicación, ¿qué significa 0×000000000?

Al ejecutar algunos programas, a veces aparecerá un mensaje de error de memoria y luego el programa se cerrará.

La memoria "0x" a la que hace referencia la instrucción "0x". Esta memoria no se puede "leer".

La memoria "0x" a la que hace referencia la instrucción "0x" no se puede "escribir".

¿Alguna vez has experimentado un fallo similar? (El contenido después de 0x puede ser diferente).

Generalmente, este fenómeno ocurre por varias razones. Una es el hardware, es decir, problemas de memoria, y la otra es el software, que tiene muchos problemas.

1. Provocado por vulnerabilidad de desbordamiento del buffer de Microsoft IE

2. Provocado por conflictos en el uso de la memoria o direcciones de memoria virtual

La ejecución del programa requiere. la asignación de una determinada dirección de memoria al programa. Cuando finaliza el programa, libera espacio para que lo utilicen nuevos programas. Win es un sistema multitarea.

A veces, una nueva tarea comienza antes que el programa anterior. termina

¿Qué debo hacer? ¿Cuánta memoria o memoria virtual se requiere para garantizar que podamos ejecutar tareas al mismo tiempo? Quizás win no haya resuelto bien este problema, por lo que este error ocurre con frecuencia. generalmente ocurre después de ejecutar software o multimedia a gran escala

3. Este problema también ocurrirá con módulos de memoria inferiores

En términos generales, la posibilidad de problemas de memoria no es alta. Los aspectos principales. son: el módulo de memoria está roto, la calidad de la memoria es problemática y hay 2. Mezclar diferentes marcas de memoria con diferentes capacidades puede provocar incompatibilidad. Al mismo tiempo, se debe prestar atención a los problemas de disipación de calor, especialmente después del overclocking. Puedes usar MemTest

Este software para probar la memoria, puede detectar completamente la estabilidad de la memoria.

Si tiene memoria dual y módulos de memoria mixtos de diferentes marcas o compró memoria de segunda mano y se produce este problema, debe verificar si hay algún problema con la memoria o con otro hardware que no sea compatible. .

4. Una vulnerabilidad en el sistema Microsoft WINDOWS.

Windows especifica la dirección de memoria 0X00000000 a 0X0000ffff como el rango de direcciones para asignar punteros nulos. se considera un error. Los programas escritos en C/C++ generalmente no realizan una verificación estricta de errores. Cuando se usa malloc para asignar memoria y el espacio de direcciones disponible para la asignación no es suficiente, se devuelve un puntero nulo. Sin embargo, el código no verifica este tipo de error y piensa que la asignación de dirección fue exitosa, por lo que accede a la dirección 0X00000000, por lo que se produce una violación de acceso a la memoria y el proceso finaliza.

La siguiente situación ocurrirá al llenar un archivo pif compuesto de caracteres ASCII:

Un archivo pif ilegal (rellenado con caracteres ascii \'x\') debe tener al menos 369 bytes , y el sistema Sólo cuando se considera un archivo pif legal, se mostrará con el ícono pif y habrá programa,

fuente, memoria, pantalla" y otros contenidos en las propiedades. Y solo cuando tiene el tamaño de un archivo que no es pif. Al ver la página "Programa" del atributo cuando tiene 369 bytes, no se producirá ningún error de programa, incluso si tiene 370 bytes. atributo de un archivo pif ilegal de más de 369 bytes, el Explorador generará un error y solicitará: \'***\' memoria a la que hace referencia la instrucción \'***\' Esta memoria no se puede \'leer\'

<. p>El problema radica en la dirección hexadecimal del archivo pif:

0x00000181[0x87]0x00000182[0x01] y

0x00000231[0xC3]0x00000232[0x02]

.

Incluso si es un archivo pif legal, simplemente cambie estos cuatro lugares. Cualquier lugar de la dirección también provocará un error de programa. Siempre que los valores de 0x00000181 y 0x00000182 se cambien a [0xFF][0xFF], cualquiera. Los cambios en otras direcciones no producirán errores.

5. Es posible que el servicio Apache no se haya instalado e iniciado correctamente; cambie

OracleOraHomeXXHTTPServer en el servicio para detener

6. falla en la asignación de memoria

Cuando el programa necesita una parte de la memoria para guardar datos, necesita llamar a la "función función" proporcionada por el sistema operativo para aplicarla. Si la asignación de memoria es exitosa, la función se asignará. la memoria recién asignada. La dirección del área se devuelve a la aplicación y la aplicación puede usar esta memoria a través de esta dirección. Esto es "asignación de memoria dinámica", y la dirección de memoria también es el "puntero" en la programación.

La memoria no siempre está disponible y es inagotable y, en ocasiones, la asignación de memoria falla. Cuando la asignación falla, la función del sistema devolverá un valor de 0. En este momento, el valor de retorno "0" ya no representa el puntero recién habilitado, sino una notificación enviada por el sistema a la aplicación, informándole que se ha producido un error. ha ocurrido. Como aplicación, debe verificar si el valor de retorno es 0 después de cada solicitud de memoria. Si es así, significa que ha ocurrido una falla y se deben tomar algunas medidas para salvarla. Esto mejora la "robustez" del programa.

Si la aplicación no verifica este error, pensará que este valor es un puntero utilizable asignado según la "inercia del pensamiento" y continuará usando esta memoria en ejecuciones posteriores. El área de memoria real en la dirección 0 almacena la "tabla de descriptores de interrupción" más importante del sistema informático y las aplicaciones no pueden utilizarla en absoluto. En un sistema operativo sin un mecanismo de protección (como DOS), escribir datos en esta dirección provocará una falla inmediata. En un sistema operativo robusto, como Windows, esta operación será capturada inmediatamente por el mecanismo de protección del sistema y el resultado. es El sistema operativo cierra a la fuerza la aplicación errónea para evitar que el error se propague. En este momento, aparecerá el error de "memoria de escritura" mencionado anteriormente, que indica que la dirección de memoria a la que se hace referencia es "0x00000000".

Hay muchas razones por las que falla la asignación de memoria. La memoria insuficiente, la versión no coincidente de las funciones del sistema, etc., pueden tener un impacto. Por lo tanto, este tipo de falla en la asignación es más común después de que el sistema operativo se ha utilizado durante mucho tiempo, después de que se han instalado una variedad de aplicaciones (incluidos programas de virus que se "instalaron" inadvertidamente) y una gran cantidad de parámetros y parámetros del sistema. Los archivos del sistema han sido modificados.

7. La aplicación hace referencia a un puntero de memoria anormal debido a su propio error.

En aplicaciones que usan asignación dinámica, a veces habrá una situación como esta: el programa intenta leer y escriba un bloque de memoria "Debería estar disponible", pero por alguna razón, el puntero disponible esperado ha caducado. Puede ser que "se haya olvidado" de solicitar la asignación al sistema operativo, o puede ser que el propio programa haya cerrado sesión en esta memoria en algún momento sin "prestar atención", etc. El sistema recupera la memoria no registrada y sus derechos de acceso ya no pertenecen a la aplicación. Por lo tanto, las operaciones de lectura y escritura también activarán el mecanismo de protección del sistema. El único destino de un programa que intenta ser "ilegal" es terminar. por la operación y todos los recursos serán recuperados. ¡Las leyes en el mundo de la informática siguen siendo mucho más efectivas y estrictas que las de los humanos!

Situaciones como esta son todos errores en el programa en sí y, a menudo, puedes reproducir el error en una secuencia específica de operaciones. Los punteros no válidos no siempre son 0, por lo que la dirección de memoria en el mensaje de error no es necesariamente "0x00000000", sino otros números aleatorios.