¿Cuál es la diferencia entre variables globales y variables locales? ¿Cómo se logra?
2. La primera se asigna en el área de datos globales de la memoria y este último se asigna en el área de pila de la memoria;
3. Diferentes ciclos de vida: las variables globales se crean y destruyen con la creación del programa principal y se destruyen con la destrucción de. las variables locales existen dentro de las funciones locales e incluso dentro del cuerpo del bucle local, pero la salida no existe
4. programa, mientras que las variables locales sólo se pueden utilizar localmente.
Las variables globales que el sistema operativo y el compilador conocen a través de ubicaciones de asignación de memoria se asignan en el segmento de datos globales y se cargan cuando se ejecuta el programa. ;
El compilador determina si es una variable global o una variable 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, la llamada área global, por lo tanto, cuando el programa opera en el). variable global, tendrá una dirección codificada para operar. ?
Para las variables locales, el espacio no se asigna en el momento de la compilación, pero la dirección de la variable local está representada por el desplazamiento de ebp o esp. Por lo tanto, cuando se llama a la función donde se encuentra la variable local, la memoria de variables locales fue realmente asignada. Desde la perspectiva del ensamblaje: cuando se ejecuta la función, las variables locales se asignan en la pila. Después de llamar a la función, se libera la memoria correspondiente a las variables locales y las variables locales se pueden asignar directamente en el registro.
El sistema operativo puede determinar si una variable es local o global mediante su dirección asignada.