Gestione della memoria: allocazione di frame
L'allocazione sul frame prende il nome “dallo stack frame„ configurato ogni volta che una funzione viene chiamata.Lo stack frame è un'area della memoria che blocca utilizza argomenti alla funzione oltre a tutte le variabili che si trovano locale definito alla funzione.Le variabili della pagina spesso sono chiamate variabili automatica “„ perché il compilatore automaticamente alloca spazio a essi.
Esistono due caratteristiche principali delle allocazioni di frame.Innanzitutto, quando si definisce una variabile locale, sufficiente spazio viene allocato nello stack frame per utilizzare l'intera variabile, anche se è una matrice di grandi dimensioni o struttura dei dati.In secondo luogo, le variabili di frame automaticamente vengono eliminati quando escono dall'ambito:
void MyFunction()
{
// Local object created on the stack
CString strName;
// Object goes out of scope and is deleted as function ends
}
Per le variabili di funzione locale, la transizione di ambito si verifica quando il termine della funzione, ma l'ambito di una variabile di frame possono essere inferiore a una funzione se le parentesi graffe annidate e.Questa l'eliminazione automatica delle variabili di frame è molto importante.Nel caso dei tipi primitivi semplice (ad esempio int o byte), matrici, o strutture di dati, l'eliminazione automatica recupera semplicemente la memoria utilizzata dalla variabile.Poiché la variabile viene disconnesso di ambito, non è possibile accedervi.Nel caso di oggetti C++, tuttavia, il processo di eliminazione automatica presenta alcune differenze più complesso.
Quando un oggetto viene definito come variabile di frame, il costruttore viene richiamato al punto in cui la definizione viene rilevata.Quando l'abbandono dell'ambito, il relativo distruttore viene richiamato prima che la memoria per l'oggetto venga recuperata.Questi costruzione e distruzione automatiche possono essere molto procedure, ma è necessario conoscere le chiamate automatiche, in particolare nel distruttore.
Il vantaggio principale di allocare gli oggetti nel frame viene automaticamente eliminate.Quando si allocano gli oggetti nel frame, non è necessario preoccuparsi che gli oggetti dimenticati che provocano le perdite di memoria.(Per informazioni dettagliate sulle perdite di memoria, vedere l'articolo Rilevamento di perdite di memoria in MFC). Uno svantaggio dell'allocazione del frame è che le variabili di frame non possono essere utilizzate all'esterno del relativo ambito.Un altro fattore nella scelta dell'allocazione del frame sull'allocazione heap è quello delle grandi strutture e oggetti, è spesso consigliabile utilizzare l'heap anziché lo stack per l'archiviazione poiché lo spazio dello stack è spesso limitato.