Una avería de la segmentación del (acortado a menudo al segfault ) es una condición de error particular que puede ocurrir durante la operación de los programas informáticos . Una avería de la segmentación ocurre cuando un programa intenta tener acceso a una posición de memoria a que no se permita tener acceso, o intenta tener acceso a una posición de memoria de una manera que no se permita (por ejemplo, el intentar escribir a una localización inalterable, o sobreescribir la parte del sistema operativo). Los sistemas basados en procesadores como el Motorola 68000 tienden a referir a estos acontecimientos como la dirección del o los errores del autobús del .

La segmentación es un acercamiento a la gerencia de memoria y a la protección en el sistema operativo . Ha sido reemplazada por la paginación para la mayoría de los propósitos, pero mucha de la terminología de la segmentación todavía se utiliza, " fault" de la segmentación; siendo un ejemplo. Algunos sistemas operativos todavía tienen segmentación en un cierto nivel lógico aunque la paginación se utilice como la política de gerencia de memoria principal.

En Unix-como sistemas operativos de, un proceso que tiene acceso memoria inválida recibe la señal SIGSEGV . En el Microsoft Windows, un proceso que tiene acceso memoria inválida recibe la excepción de STATUS_ACCESS_VIOLATION.

Ejemplo

Aquí está un ejemplo del código del ANSI C que debe crear una avería de la segmentación en las plataformas con la protección de memoria:

*s = " del carbón de leña del const; hola world" ; *s = “H”;

Cuando el programa que contiene este código es compilado, el " de la secuencia ; hola world" se coloca en la sección binario del programa marcado como inalterable; cuando está cargado, el sistema operativo pone lo con otras secuencias y datos constantes en un segmento inalterable de la memoria. Cuando está ejecutada, una variable, s, se fija para señalar a la localización de la secuencia, y se hace una tentativa de escribir un carácter del H con la variable en la memoria, causando una avería de la segmentación. La compilación y funcionar con de tal programa en el OpenBSD 4.0 produce el error Runtime siguiente:

GCC segfault.c - g de $ - segfault de o $ ./segfault Avería de la segmentación

Backtrace Gdb :

El programa recibió la señal SIGSEGV, avería de la segmentación. 0x1c0005c2 en cañería () en segfault.c: 6 6 *s = “H”;

En cambio, el GCC 4.1 en el GNU /el linux produce un error de tiempo de compilación por abandono:

GCC segfault.c - g de $ - segfault de o segfault.c: En cañería del `de la función': segfault.c: 4: error: asignación de la localización inalterable

Las condiciones bajo las cuales las violaciones de la segmentación ocurren y cómo se manifiestan son específicas a un sistema operativo.

Porque un error muy común del programa es un dereference del puntero nulo (haber leído o escribe a través del puntero nulo, un indicador para tratar 0, de uso general en C al " malo; indicador a ningún object" o como indicador de error), la mayoría de los sistemas operativos trazan la primera página de la memoria (que comienza en la dirección 0) de modo que el acceso de ella cause una avería de la segmentación.

int* PTR = (int*) 0x000000; *ptr = 1;

Este código de la muestra crea un indicador a la dirección de memoria 0x000000, e intenta asignarle un valor. El hacer causa tan una avería de la segmentación en muchos recopiladores.

Ver también

Desbordamiento del almacenador intermediario
Error en el bus
Vaciado de memoria
Segfault, un Web site del humor nombrado después de este error.
  • Zenithic
  • Pontius Pilate's wife
    Random links:231 A.C. | Siete árboles, California | Asilo del resto, Georgia | Centro para los estudios milenarios | Gabinete de Grecia

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">