No pude encontrar la información donde se crean las instancias de clase de excepción durante el manejo de excepciones? ¿En qué área de memoria (pila, montón, almacenamiento estático, etc.)? Supongo que no está en la pila debido al desenrollado de la pila ...¿En qué área de memoria se crean instancias de clases de excepción?
Respuesta
de la norma:
15.2.4: La memoria para la copia temporal de la excepción de ser lanzado es asignado de forma no especificada, , excepto como se indica en 3.7.3.1.
Y 3.7.3.1 dice:
3.7.3.1: Todos los objetos que no tienen una duración de almacenamiento dinámico ni son locales tienen duración de almacenamiento estático. El almacenamiento para estos objetos debe durar para la duración del programa (3.6.2, 3.6.3).
La respuesta es "en un área misteriosa gestionada por el compilador": en serio, la norma no especifica dónde deben almacenarse.
excepciones siempre se tiran por el valor de lo que no hay problema, incluso si asigna en la pila
Es la cocina cotizada de la norma, no se especifica. La mayoría de las implementaciones los asignan desde el montón, ya que necesitan sobrevivir al proceso de desenrollado de la pila, lo que puede eliminar los fotogramas de la pila (cuando se lanza fuera de una función) o crear nuevos (destructores de llamadas, etc.). GCC usa la función incorporada __cxa_allocate_exception
para asignar la memoria.
- 1. ¿Cuándo se crean las instancias de Enum?
- 2. ¿Cómo se crean instancias de Spring HandlerInterceptors?
- 3. ¿Cómo comprobar qué partes de la plantilla se crean instancias?
- 4. Memoria estática en python: ¿los bucles crean nuevas instancias de variables en la memoria?
- 5. ¿Por qué no se crean instancias de los miembros de clase de plantilla no llamados?
- 6. Miembros de objetos JavaScript que se crean como matrices de prototipos a partir de todas las instancias de clases
- 7. Clases/instancias en Ontología
- 8. ¿Qué sucede cuando se crean tipos de valores?
- 9. scala: creación de instancias de clases abstractas?
- 10. Extendiendo clases e instancias
- 11. ¿En qué lugar de la memoria se encuentran objetos cuando se crean dentro de un bloque estático?
- 12. solicitudes de 10 clientes para un servlet.Cómo se crean muchas instancias de servlet
- 13. Asignación de memoria para una excepción
- 14. Creación de instancias de objetos en las clases de prueba
- 15. Pautas para cuando usar clases estáticas sobre clases de instancias?
- 16. ¿Por qué el área de memoria $ 1020 no se puede escribir en M68HC12 con staa?
- 17. C# Image.Clone Excepción de memoria
- 18. 1,2 GB de memoria excepción
- 19. ¿Qué tipo de aplicaciones se crean utilizando Python?
- 20. Resharper - NUnit - VS2010: Excepción de memoria insuficiente
- 21. opción g ++ para mostrar qué clases se crean desde las plantillas
- 22. C#: Excepción de memoria agotada
- 23. .NET: ¿Cuándo se crean instancias de los atributos y puedo obtener una referencia al tipo que están decorando?
- 24. excepción de memoria insuficiente en System.Drawing.Image.FromFile()
- 25. excepción de memoria insuficiente en SQL 2008
- 26. Creación de instancias de objetos en memoria compartida C++
- 27. Cuantos objetos se crean
- 28. ¿Cómo inicializar clases (no instancias) en Python?
- 29. Creando instancias de clases de C# personalizadas de IronPython
- 30. Activator.CreateInstance - Cómo crear instancias de clases que tienen constructores parametrizados