PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::MemoryGroup Klassenreferenz

Speicherverwaltung: MemSpace. Mehr ...

Öffentliche Methoden

 MemoryGroup ()
 Konstruktor der Klasse. Mehr ...
 
 ~MemoryGroup ()
 Destruktor der Klasse. Mehr ...
 
void * calloc (size_t size)
 Speicher allokieren und löschen. Mehr ...
 
void clear ()
 Kompletten Speicher freigeben. Mehr ...
 
size_t count () const
 Anzahl Speicherblöcke. Mehr ...
 
void free (void *adr)
 Speicherblock freigeben. Mehr ...
 
void * malloc (size_t size)
 Speicher allokieren. Mehr ...
 
void * realloc (void *adr, size_t size)
 Speicherblock verkleinern oder vergrößern. Mehr ...
 
size_t size () const
 Belegter Speicher. Mehr ...
 
char * strdup (const char *string)
 String kopieren. Mehr ...
 
char * strndup (const char *string, size_t size)
 Teilstring kopieren. Mehr ...
 

Private Methoden

void addToList (void *block)
 Speicherblock zur Liste hinzufügen. Mehr ...
 
void removeFromList (void *block)
 Speicherblock aus der Liste entfernen. Mehr ...
 

Private Attribute

void * first
 
void * last
 
size_t totalBlocks
 
size_t totalSize
 

Ausführliche Beschreibung

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.

Beschreibung der Konstruktoren und Destruktoren

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.

Dokumentation der Elementfunktionen

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]blockPointer 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
sizeGewünschte Größe des Speicherblocks in Bytes
Rückgabe
Pointer auf den Beginn des Speicherblocks
Ausnahmebehandlung
OutOfMemoryExceptionwird 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
adrPointer auf vorhandenen Speicherblock
Ausnahmebehandlung
IllegalMemoryAddressExceptionwird geworfen, wenn der Speicherblock nicht über diese Klasse allokiert wurde
NullPointerExceptionwird geworfen, wenn adr auf NULL zeigt
void * ppl7::MemoryGroup::malloc ( size_t  size)
Beschreibung:
Mit dieser Funktion wird ein neuer Speicherblock allokiert.
Parameter
sizeGewünschte Größe des Speicherblocks in Bytes
Rückgabe
Pointer auf den Beginn des Speicherblocks
Ausnahmebehandlung
OutOfMemoryExceptionwird 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
adrPointer auf vorhandenen Speicherblock
sizeNeue Größe in Bytes
Rückgabe
Pointer auf den Beginn des neuen Speicherblocks
Ausnahmebehandlung
OutOfMemoryExceptionwird geworfen, wenn kein Speicher mehr frei ist
IllegalMemoryAddressExceptionwird geworfen, wenn der Speicherblock nicht über diese Klasse allokiert wurde
NullPointerExceptionwird 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]blockPointer 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
strPointer auf einen C-String, der mit einem 0-Byte terminiert sein muß.
Rückgabe
Pointer auf den Beginn des Speicherblocks
Ausnahmebehandlung
OutOfMemoryExceptionwird 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
strPointer auf einen C-String
sizeAnzahl Bytes, die kopiert werden sollen
Rückgabe
Pointer auf den Beginn des Speicherblocks
Ausnahmebehandlung
OutOfMemoryExceptionwird geworfen, wenn kein Speicher mehr frei ist

Dokumentation der Datenelemente

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: