2010-02-12 6 views

risposta

5

dalla norma:

15.2.4: La memoria per la copia temporanea del all'eccezione generata è allocato in modo non specificato, eccetto come indicato in 3.7.3.1.

E 3.7.3.1 dice:

3.7.3.1: Tutti gli oggetti che non hanno dinamica durata di conservazione né sono locali hanno durata di conservazione statica. La memoria per questi oggetti deve durare per la durata del programma (3.6.2, 3.6.3).

3

La risposta è "in un'area misteriosa gestita dal compilatore" - seriamente, lo standard non specifica dove devono essere memorizzati.

0

eccezioni sono sempre gettati per valore quindi nessun problema anche se allocato sulla pila

1

La cucina è quotata dallo standard, non è specificata. La maggior parte delle implementazioni li assegna dall'heap, poiché devono sopravvivere al processo di unwinding dello stack, che può rimuovere i frame dello stack (quando si lancia all'esterno di una funzione) o crearne di nuovi (chiamando i distruttori, ecc.). GCC utilizza la funzione integrata __cxa_allocate_exception per allocare la memoria.

Problemi correlati