¿Cuál es la ventaja de tener 2 secciones - .data y .bss para las variables de alcance del proceso. ¿Por qué no solo tienes uno? Sé para qué se usa cada sección. Estoy usando gcc.¿Cuál es la ventaja de tener una sección .bss?
6
A
Respuesta
7
.bss consume "memoria" pero no espacio dentro del archivo ejecutable. Su único propósito es mantener datos inicializados cero (como usted sabe).
.data (y las secciones relacionadas como rodata) consumen espacio dentro del archivo ejecutable, y generalmente contiene cadenas, enteros y tal vez incluso objetos enteros.
Hay una gran cantidad de datos inicializados en cero en un programa típico, por lo que tener esos datos no consume más espacio en el archivo de salida es una ventaja significativa.
En cuanto a las secciones de datos * múltiples ... .rodata/.data se puede utilizar como una sugerencia para la protección de la memoria (no permite sobrescribir .rodata, permitir leer/escribir en .data).
Cuestiones relacionadas
- 1. x86 ASM Linux - Usando la Sección .bss
- 2. ¿Cuál es la ventaja de tener clases internas estáticas públicas de una interfaz/clase?
- 3. ¿Cuál es la ventaja de Jikes RVM
- 4. ¿Cuál es la ventaja de que una cadena sea inmutable?
- 5. ¿Cuál es la principal ventaja de tener un paquete de instalación de MSI?
- 6. ¿Cuál es la ventaja de tener un nombre de dominio (spotilocal) que se resuelve en 127.0.0.1?
- 7. ¿Cuál es la ventaja de tener un proceso de 8 letras?
- 8. Cuál es la ventaja de las excepciones encadenadas
- 9. ¿Cuál es la ventaja de tener this/self puntero obligatorio explícito?
- 10. ¿Cuál es la ventaja de pathmunge over grep?
- 11. ¿Cuál es la ventaja de usar memset() en C
- 12. ¿Cuál es exactamente la ventaja de usar Punjab
- 13. ¿Cuál es la ventaja de utilizar la codificación Base64?
- 14. ¿cuál es la ventaja de la función estática?
- 15. ¿Cuál es la ventaja de esta llamada de función indirecta?
- 16. ¿Cuál es la ventaja de UnityContainer.Resolve sobre Activator.CreateInstance?
- 17. ¿Cuál es la ventaja de usar Python Virtualbox API?
- 18. ¿Cuál es la ventaja de usar filter_has_var() sobre isset()
- 19. ¿Cuál es la ventaja de WSDualHttpBinding en WCF?
- 20. ¿Cuál es la ventaja de usar varbinary sobre varchar aquí?
- 21. ¿Cuál es la ventaja de utilizar NginX para Node.js?
- 22. ¿Cuál es la ventaja de CodeFirst sobre Database First?
- 23. ¿cuál es la ventaja de utilizar "importación estática"?
- 24. ¿Cuál es la VENTAJA de JavaCC frente a ANTLR?
- 25. ¿Cuál es la ventaja de usar métodos estáticos en Python?
- 26. ¿Cuál es la ventaja de este peculiar formateo?
- 27. ¿Cuál es la ventaja de scrypt over bcrypt?
- 28. ¿Cuál es la ventaja del comando de rebase en Mercurial?
- 29. En Rails, ¿cómo tener una sección/admin y luego controladores dentro de la sección de administración?
- 30. ¿Las variables inicializadas cero de la sección .bss ocupan espacio en el archivo elf?
¿Puedes dar algunos ejemplos? Vista de memoria, instrucciones de asm, etc. – Bruce
@Bruce: en tiempo de ejecución, básicamente no hay diferencia entre .data y .bss. La diferencia está en la salida del enlazador (una sección existe en el disco, la otra no) y en cómo el cargador ejecutable carga la sección. .data es una copia - el cargador puede usar memcpy ... .bss se pone a cero - el cargador puede usar memset. –