Speicherzuteilung.
Speicherzuteilung. Sie sollten das Ergebnis der Funktion immer auf 0 testen. Zugriffe auf fehlerhaft reservierten Speicher führen zu schweren Fehlern bei der Skriptausführung. Der neu reservierte Speicher wird als leerer char*-String initialisiert, d.h., das erste (und nur dieses) Byte bekommt das String-Ende-Zeichen 0 zugewiesen.
Alternativ zum Funktionsnamen alloc kann auch new verwendet werden. Der Bezeichener new darf daher auch nicht für eigene Funktionen oder Variablen verwendet werden.
Mit alloc reservierter Speicher muss mit release oder free wieder freigegebenen werden.
Speicherzuteilung an Strings kann auch statisch erfolgen durch folgende Definition :
char str[256];
Diese Reservierungsart ist für kleine Strings die einfachere Lösung. Eine Skript darf aber insgesamt für alle Variablen nur eine fest definierten Speicher belegen. Standardmäßig sind das 128 kB. Durch den Aufruf von Unterprozeduren können Sie dieses Limit schnell erreichen.
Name | Typ | Default | Beschreibung |
Return | char* | Reservierter Speicher der gewünschten Größe oder 0 Das erste Byte des reservierten wird mit 0 initialisiert. Das Ergebnis hat damit den Inhalt "". |
|
size | int | 8192 | Größe des Speichers in Bytes, der reserviert werden soll. Gehen sie damit mit Bedacht um, es ist eine begrenzte Ressource. |
Erzeuge einen char*-String, mit dem ein CLOB von der Datenbank geholt werden kann
char *clob = alloc(32768);
if (!clob) return 1; : release(clob);
Alphabetic index HTML hierarchy of classes or Java