Considere el siguiente fragmento de código.Por qué la dirección de la variable permanece igual en la llamada al sistema fork() después de haber sido modificada
if (fork() == 0)
{
a = a + 5;
printf("%d, %d \n", a, &a);
}
else
{
a = a - 5;
printf ("%d, %d \n", a,& a);
}
yo sepa, cuando se hace tenedor(), el espacio de direcciones virtuales de la matriz se copia en el niño y ambos padres del niño & cuota de las mismas páginas físicas hasta que uno de ellos trata de modificar. En el momento en que uno de los elementos secundarios & padre modifica una variable, la página física del elemento primario se copia en otra página para el elemento secundario y las páginas físicas permanecen privadas. Entonces, aquí el valor de 'a' es diferente en el elemento secundario &. Pero cuando se trata de las direcciones de 'a' en el elemento primario &, el resultado es el mismo. No soy capaz de descubrir por qué la dirección permanece igual incluso si las páginas físicas son diferentes.
Significa que lo que sea que veamos es la dirección virtual. ¿Podemos ver la dirección física real a través de nuestro programa? –
Si obtiene las herramientas correctas (SO). Pero en circunstancias normales, no. –
Gracias por la respuesta .. –