Speicherverwaltung: MemSpace.
Mehr ...
- Beschreibung:
- MemoryGroup ist ein Wrapper für Malloc & Co. der libc-Bibliothek und dient zur Gruppierung von Speicher. Die Klasse merkt sich jeden über sie allokierten Speicherbereich in einer Liste und kann dadurch sämtlichen Speicher auf einmal über den Destruktor oder durch Aufruf von MemoryGroup::clear wieder löschen.
- Durch Aufruf von MemoryGroup::malloc, MemoryGroup:calloc oder MemoryGroup::strdup wird Speicher allokiert. Mit MemoryGroup:realloc kann ein existierender Speicherblock vergrößert oder verkleinert werden. Mit MemoryGroup::free wird ein Speicherblock wieder freigegeben. Mit MemoryGroup::clear werden alle über diese Klasse allokierten Speicherbereiche auf einmal freigegeben.
- Achtung
- Speicher, der durch diese Klasse allokiert wurde, darf nicht mit der free-Funktion der libc freigegeben werden und umgekehrt.
- Zu beachten
- Die Klasse entspricht funktional der Klasse CMemSpace aus Version 6 der PPLib.
| ppl7::MemoryGroup::MemoryGroup |
( |
| ) |
|
- Beschreibung:
- Der Konstruktor initialisiert die internen Variablen.
| ppl7::MemoryGroup::~MemoryGroup |
( |
| ) |
|
- Beschreibung:
- Der Destruktor ruft die Funktion MemoryGroup::clear auf und stellt somit sicher, dass sämtlicher durch die Klasse allokierte Speicher wieder freigegeben wird.
| void ppl7::MemoryGroup::addToList |
( |
void * |
block | ) |
|
|
private |
- Beschreibung:
- Mit dieser internen Funktion wird ein Speicherblock zur Verwaltungsliste hinzugefügt. Ausserdem werden die internen Zähler für Anzahl Speicherblöcke und Gesamtspeichergröße hochgezählt.
- Parameter
-
| [in] | block | Pointer auf die Verwaltungsstruktur des Speicherblocks |
| void * ppl7::MemoryGroup::calloc |
( |
size_t |
size | ) |
|
- Beschreibung:
- Mit dieser Funktion wird ein neuer Speicherblock allokiert und mit 0-Bytes initialisiert.
- Parameter
-
| size | Gewünschte Größe des Speicherblocks in Bytes |
- Rückgabe
- Pointer auf den Beginn des Speicherblocks
- Ausnahmebehandlung
-
| OutOfMemoryException | wird geworfen, wenn kein Speicher mehr frei ist |
| void ppl7::MemoryGroup::clear |
( |
| ) |
|
- Beschreibung:
- Durch Aufruf dieser Funktion werden sämtliche Speicherblöcke freigegeben, die über diese Klasse allokiert wurden. Eventuell noch vorhandene Pointer auf Speicherbereiche dieser Klasse werden ungültig.
| size_t ppl7::MemoryGroup::count |
( |
| ) |
const |
- Beschreibung:
- Mit dieser Funktion kann abgefragt werdenm, wieviele Speicherblöcke zur Zeit von der Klasse allokiert sind.
- Rückgabe
- Anzahl Speicherblöcke
| void ppl7::MemoryGroup::free |
( |
void * |
adr | ) |
|
- Beschreibung:
- Mit dieser Funktion wird ein vorhandener Speicherblock wieder freigegeben. der Speicherblock
adr muß zuvor über diese Klasse allokiert worden sein.
- Parameter
-
| adr | Pointer auf vorhandenen Speicherblock |
- Ausnahmebehandlung
-
| IllegalMemoryAddressException | wird geworfen, wenn der Speicherblock nicht über diese Klasse allokiert wurde |
| NullPointerException | wird geworfen, wenn adr auf NULL zeigt |
| void * ppl7::MemoryGroup::malloc |
( |
size_t |
size | ) |
|
- Beschreibung:
- Mit dieser Funktion wird ein neuer Speicherblock allokiert.
- Parameter
-
| size | Gewünschte Größe des Speicherblocks in Bytes |
- Rückgabe
- Pointer auf den Beginn des Speicherblocks
- Ausnahmebehandlung
-
| OutOfMemoryException | wird geworfen, wenn kein Speicher mehr frei ist |
| void * ppl7::MemoryGroup::realloc |
( |
void * |
adr, |
|
|
size_t |
size |
|
) |
| |
- Beschreibung:
- Mit dieser Funktion wird ein vorhandener Speicherblock verkleinert oder vergrößert. Der Speicherblock
adr muß zuvor über diese Klasse allokiert worden sein.
- Parameter
-
| adr | Pointer auf vorhandenen Speicherblock |
| size | Neue Größe in Bytes |
- Rückgabe
- Pointer auf den Beginn des neuen Speicherblocks
- Ausnahmebehandlung
-
| OutOfMemoryException | wird geworfen, wenn kein Speicher mehr frei ist |
| IllegalMemoryAddressException | wird geworfen, wenn der Speicherblock nicht über diese Klasse allokiert wurde |
| NullPointerException | wird geworfen, wenn adr auf NULL zeigt |
| void ppl7::MemoryGroup::removeFromList |
( |
void * |
block | ) |
|
|
private |
- Beschreibung:
- Mit dieser internen Funktion wird ein Speicherblock aus der Verwaltungsliste entfernt. Ausserdem werden die internen Zähler für Anzahl Speicherblöcke und Gesamtspeichergröße runtergezählt.
- Parameter
-
| [in] | block | Pointer auf die Verwaltungsstruktur des Speicherblocks |
| size_t ppl7::MemoryGroup::size |
( |
| ) |
const |
- Beschreibung:
- Diese Funktion liefert die Anzahl Bytes zurück, die aktuell von der Klasse belegt werden. Diese errechnen sich aus dem Speicher für die Klasse selbst (=sizeof(MemoryGroup)) plus die allokierten Speicherblöcke und die Verwaltungsstruktur pro Speicherblock.
- Rückgabe
- Belegter Speicher in Bytes
| char * ppl7::MemoryGroup::strdup |
( |
const char * |
str | ) |
|
- Beschreibung:
- Mit dieser Funktion wird ein neuer Speicherblock allokiert, der groß genug ist, um den String
str aufzunehmen. Anschließend wird der String in den neuen Speicherblock kopiert.
- Parameter
-
| str | Pointer auf einen C-String, der mit einem 0-Byte terminiert sein muß. |
- Rückgabe
- Pointer auf den Beginn des Speicherblocks
- Ausnahmebehandlung
-
| OutOfMemoryException | wird geworfen, wenn kein Speicher mehr frei ist |
| char * ppl7::MemoryGroup::strndup |
( |
const char * |
str, |
|
|
size_t |
size |
|
) |
| |
- Beschreibung:
- Mit dieser Funktion wird ein neuer Speicherblock mit der Größe
size allokiert. Anschließend werden die ersten size Bytes des Strings str in den neuen Speicherblock kopiert.
- Parameter
-
| str | Pointer auf einen C-String |
| size | Anzahl Bytes, die kopiert werden sollen |
- Rückgabe
- Pointer auf den Beginn des Speicherblocks
- Ausnahmebehandlung
-
| OutOfMemoryException | wird geworfen, wenn kein Speicher mehr frei ist |
| void* ppl7::MemoryGroup::first |
|
private |
| void * ppl7::MemoryGroup::last |
|
private |
| size_t ppl7::MemoryGroup::totalBlocks |
|
private |
| size_t ppl7::MemoryGroup::totalSize |
|
private |
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
- /jenkins/jobs/clang_ppl7/workspace/include/ppl7.h
- /jenkins/jobs/clang_ppl7/workspace/src/core/MemoryGroup.cpp