Ich konnte die Informationen nicht finden, wo Exception Class-Instanzen während der Ausnahmebehandlung erstellt werden? In welchem Speicherbereich (Stack, Heap, Statischer Speicher usw.)? Ich nehme an, es ist nicht auf dem Stapel wegen Stapelabwickeln ...In welchem Speicherbereich werden Ausnahmeklassen Instanzen erstellt?
Antwort
Von der Standard auf dem Stapel zugeordnet:
15.2.4: Der Speicher für die temporäre Kopie der Ausnahme zugeordnet geworfen auf nicht spezifizierte Weise, außer wie in 3.7.3.1 angegeben.
Und 3.7.3.1 sagt:
3.7.3.1: Alle Objekte, die weder dynamische Speicherdauer haben, noch sind statische Speicherdauer lokale haben. Der Speicher für diese Objekte soll für die Dauer des Programms (3.6.2, 3.6.3) dauern.
Die Antwort ist "in einem mysteriösen Bereich durch den Compiler verwaltet" - ernsthaft, der Standard gibt nicht an, wo sie gespeichert werden müssen.
Ausnahmen werden immer von Wert geworfen so, wenn kein Problem, selbst
Ist Küche zitiert aus dem Standard, ist es nicht näher bezeichnet. Die meisten Implementierungen weisen sie dem Heap zu, da sie den Stack-Unwinding-Prozess überleben müssen, der Stack-Frames entfernen kann (wenn man eine Funktion verlässt) oder neue erstellen (Destruktoren aufrufen usw.). GCC verwendet die integrierte Funktion __cxa_allocate_exception
für die Zuweisung des Speichers.
- 1. Wann werden Enum-Instanzen erstellt?
- 2. In welchem Speichersegment werden Befehlszeilenargumente gespeichert?
- 3. gcloud mehrere VM-Instanzen werden erstellt
- 4. Erstellt LoadLibrary unterschiedliche Instanzen?
- 5. Wie Wiederholungen in benutzerdefinierten Java-Ausnahmeklassen vermieden werden können
- 6. Wo/wann sollten die DAOImplementation-Instanzen gefunden/erstellt werden?
- 7. Wann erstellt Spring Instanzen von Objekten, die injiziert werden
- 8. 10 Clientanforderungen für ein Servlet.Wie viele Servlet-Instanzen erstellt werden
- 9. Speicherbereich mit verketteten Listenfunktionen
- 10. Sicherer Speicherbereich für Stapelkanarien
- 11. warum alle Ausnahmeklassen müssen serializable
- 12. Zwei CDI @TransactionScoped Bean-Instanzen erstellt. Warum?
- 13. Werden Android Service-Instanzen wiederverwendet?
- 14. IntelliTest mitteilen, in welchem Projekt generierte Tests gespeichert werden sollen?
- 15. Welcher Speicherbereich ist ein konstantes Objekt in C++?
- 16. Unter welchem Präfix sollte Schimmercat installiert werden?
- 17. VisualStudioCode erstellt mehrere Instanzen unter Windows 7
- 18. An welchem Punkt erstellt map :: emplace ein Objekt?
- 19. Tracing Schreibzugriff auf Klasseninstanz/Speicherbereich in gdb
- 20. Wie erstellt man mehrere Shader-Effekt-Instanzen?
- 21. Speichersegment kann nicht erstellt werden, wenn 2 Instanzen von Postgresql ausgeführt werden
- 22. Mehrere Instanzen von Default Producer in Camel erstellt
- 23. In .NET, in welchem Thread werden Ereignisse behandelt?
- 24. Erstellt Instanzen einer Klasse in einem statischen PageMethod-Thread-Safe?
- 25. Wie behandelt der IIS7 ein Authentifizierungsmodul? Speicherbereich?
- 26. Welche Ausnahmeklassen befinden sich in der C++ - Standardbibliothek?
- 27. Best Practices zum Definieren eigener Ausnahmeklassen?
- 28. Wie erstellt man mehrere Instanzen des gleichen Feldtyps in Django?
- 29. Angular2 Inject-Dienst in einem anderen Dienst erstellt 2 Instanzen
- 30. Wie erstellt man unterschiedliche Instanzen einer Klasse in Python?