¿Cuál es la diferencia entre variables globales y variables locales? ¿Cómo se logra?
1. Las variables globales se utilizan en este bloque de programa, mientras que las variables locales se utilizan en la función actual.
2. Las primeras se asignan en el área de datos globales de la memoria y las siguientes. Este último se asigna en el área de la pila.
3. El ciclo de vida es diferente: las variables globales se crean y crean con el programa principal y se destruyen cuando se destruye el programa principal. , incluso los cuerpos de bucle local, etc., y no existen después de la salida
p>
4. Diferentes métodos de uso: después de la declaración, las variables globales se pueden usar en todas las partes del programa, mientras que las locales se pueden usar en todas las partes del programa. las variables solo se pueden usar localmente
El sistema operativo y el compilador determinan la ubicación de la asignación de memoria a través de Las variables globales conocidas se asignan en la sección de datos globales y se cargan cuando se ejecuta el programa.
El compilador determina si se trata de una variable global o local mediante análisis gramatical y léxico. Si es una variable global, el compilador asignará una dirección virtual a la variable global al traducir el código fuente a código binario (una dirección superior a 0x00400000 en Windows, que es el llamado área global), por lo que el programa La operación se realiza en una dirección codificada.
Para las variables locales, no se asigna espacio durante la compilación. En cambio, la dirección de la variable local se expresa como un desplazamiento relativo a ebp o esp. Por lo tanto, la memoria de la variable local solo se asigna cuando la función donde. donde se ubica la variable local se llama distribución real. Desde un punto de vista de ensamblaje: cuando se ejecuta la función, las variables locales se asignan en la pila y la memoria correspondiente a las variables locales se libera después de que se completa la llamada a la función. Además, las variables locales se pueden asignar directamente en los registros.
El sistema operativo puede determinar si una variable es una variable local o una variable global a través de la dirección de asignación de la variable.