- FreeMode
- FreeMode
- Reserve
- Resize
- Clear
- Shutdown
- CreateElement
- Add
- AddArray
- Insert
- InsertArray
- AssignArray
- Update
- Shift
- Detach
- Delete
- DeleteRange
- At
- CompareArray
- InsertSort
- Search
- SearchGreat
- SearchLess
- SearchGreatOrEqual
- SearchLessOrEqual
- SearchFirst
- SearchLast
- Save
- Load
- Type
FreeMode
Imposta il flag di gestione della memoria.
void FreeMode(
|
Parametri
mode
[in] Nuovo valore del flag di gestione della memoria.
Valore di ritorno
Nessuno.
Nota
L' impostare la flag di gestione della memoria è una parte importante della classe di utilizzo CArrayObj. Dal momento che gli elementi dell'array sono puntatori a oggetti dinamici, è importante determinare che cosa fare con loro durante la rimozione dall'array.
Se il flag è impostato, la rimozione di un elemento dall'array, l'elemento viene cancellato automaticamente dall'operatore delete. Se il flag non è impostato, si presume che un puntatore all'oggetto eliminato è ancora da qualche parte nel programma utente e verrà deallocato dal programma più in la.
Se il programma utente ripristina il flag di gestione della memoria, l'utente deve capire la sua responsabilità per la rimozione dell'array prima della fine del programma. Altrimenti la memoria allocata per gli elementi del nuovo operatore non viene rilasciata.
Per grandi quantità di dati questo potrebbe portare anche ad un crash del vostro terminale.
Se l'utente non azzera il flag di gestione della memoria, c'è un altro trabocchetto. Quando gli elementi puntatore a matrice vengono memorizzati da qualche parte nelle variabili locali, allora la rimuozione dell'array porterà ad un errore critico e crash del programma utente. Per default, viene impostato il flag di gestione della memoria, cioè la classe dell'array è responsabile di liberare gli elementi di memoria.
Esempio:
//--- esempio per CArrayObj::FreeMode(bool)
|