La diferencia entre la sección .bss y la sección .data y .rodata

 

Comprender esto es muy útil para optimizar el tiempo y el espacio del programa.

 

Segmento BSS:

El segmento bss (Bloque iniciado por símbolo) generalmente se refiere a un área de memoria utilizada para almacenar variables globales no inicializadas o inicializadas en el programa.

La interpretación de .bss en "Programming ground up" es: hay otra sección llamada .bss. Esta sección es como la sección de datos, excepto que no ocupa espacio en el ejecutable.
Hay disponibles secciones de texto y de datos. El sistema ejecuta el archivo ejecutable desde el archivo ejecutable; la sección bss no está en el archivo ejecutable y el sistema lo inicializa.

Esta sección no tiene información de tamaño en el archivo ELF, y después de que se carga en la memoria, se le asignará un espacio de memoria donde todas las palabras se inicializan a 0 (la mayoría de los sistemas operativos borrarán todas las variables globales bss al cargar programas. , No es necesario que lo borre manualmente, pero para garantizar la portabilidad del programa, también es una buena práctica inicializar manualmente estas variables a 0)

La sección .bss solo tiene datos en tiempo de ejecución (es decir, no hay datos en tiempo de compilación), por lo que en lugar de asignar datos en tiempo de compilación, reserva espacio de memoria en tiempo de ejecución.

 

Rodata:
ro significa solo lectura, es decir, datos de solo lectura (const).

 


Árbitro:

https://www.cnblogs.com/sigmahh/archive/2009/07/03/1516474.html

https://blog.csdn.net/Xzg_2017/article/details/81510271

Aoki Fenglang. "Compilador casero" Publicaciones de la gente y prensa de telecomunicaciones.

Fan Zhidong; Zhang Qiongsheng. "Construyendo un sistema de compilación por uno mismo: compilación, compilación y vinculación" Press Industry Industry.

Publicado 374 artículos originales · 95 alabanzas · 260,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/qq_35865125/article/details/105333719
Recomendado
Clasificación