- 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
Setzt das Flag von Speicherverwaltung.
void FreeMode(
|
Parameter
mode
[in] Der neue Wert des Flags von Speicherverwaltung.
Rückgabewert
Nichts.
Hinweis
Setzen vom Speicherverwaltung-Flags ist ein wichtiger Punkt bei der Verwendung von der Klasse CArrayObj. Da die Array-Elemente sind Zeiger auf dynamische Objekte, ist es wichtig zu bestimmen, was mit ihnen beim Löschen aus dem Array zu tun.
Wenn ein Flag gesetzt ist, wird das Element automatisch durch den Operator delete beim Löschen aus dem Array gelöscht werden. Wenn kein Flag gesetzt ist, wird angenommen, dass ein Zeiger auf ein gelöschtes Objekt noch irgendwo im Anwenderprogramm bleibt und wird bei der Programm danach freigegeben.
Wenn das Anwenderprogramm das Flag der Speicherverwaltung löscht, muss der Benutzer die Verantwortung für die Entfernung von Array-Elementen vor dem Ende des Programms verstehen, denn sonst bleibt der Speicher, der durch den Elementen währende der Erstellung mit dem new-Operator belegt war, nicht freigegeben.
Wenn Datenmenge groß ist, kann dies zu Fehlfunktionen des Terminals führen. Wenn das Anwenderprogramm löscht nicht das Flag der Speicherverwaltung, gibt es eine andere "Fallgrube".
Verwendung von irgendwo in den lokalen Variablen gespeicherten Array-Elemente-Zeigern nach dem Entfernen des Array wird zu einem kritischen Fehler und Programmabbruch führen. Standardmäßig ist das Speicherverwaltung-Flag festgelegt, d.h. die Array-Klasse ist für die Freigabe des Speichers verantwortlich.
Beispiel:
//--- example for CArrayObj::FreeMode(bool)
|