FB_DynMem_Manager2

Der Funktionsbaustein stellt die Möglichkeit bereit, dynamisch Speicher zu allokieren und diesen wieder freizugeben. Hierbei geben integrierte Zähler den Speicherverbrauch an und ermöglichen so einen Überblick über den bereits allokierten Speicher.

Es wird dem Anwender freigestellt, ob eine Instanz über die gesamte Applikation hinweg genutzt wird, oder ob mehrere einzelne Instanzen für verschiedene Programmteile verwendet werden. Letzteres kann bei größeren Anwendungen von Vorteil im Diagnosefall sein. Dieser Funktionsbaustein ist MultiTasking-fähig und eine Instanz kann somit aus verschiedenen Task-Kontexten heraus verwendet werden.

Sollte der Funktionsbaustein beim Herunterfahren der SPS feststellen, dass nicht die gesamte Menge des allokierten Speichers bereits freigegeben ist, wird eine Fehlermeldung als Event an den TC3 Event Logger versendet.

Der Funktionsbaustein FB_DynMem_Manager2 erweitert FB_DynMem_Manager mit dem Wissen über die Größe der allokierten Speicherblöcke. Dies vereinfacht die Speicherfreigabe mittels der Methode Free2(), weil die Größe des Speicherblocks nicht angegeben werden muss.

 

Properties

nAllocatedSize: gibt die aktuelle Menge des mit dieser Funktionsbausteininstanz allokierten Speichers in Bytes an.

nBufferCount: gibt die Menge der mit dieser Funktionsbausteininstanz allokierten Puffer an.

nObjectCount: - future reserved -

 

Methoden

Alloc():

Die Methode allokiert dynamisch Speicher und liefert einen Pointer auf diesen Speicherblock zurück. Bei fehlgeschlagener Allokation, bspw. weil kein freier Speicher verfügbar ist, liefert die Methode NULL zurück.

Neben der gewünschten Größe in Bytes wird angegeben, ob der Speicherblock genullt werden soll.

METHOD Alloc : PVOID
VAR_INPUT
    nSize    : UDINT;    // requested size in bytes
    bReset   : BOOL;     // zero the allocated memory    
END_VAR

 

Free2():

Die Methode gibt einen zuvor allokierten Speicher wieder frei. Hierbei muss der Speicherblock zuvor mit derselben Funktionsbausteininstanz allokiert worden sein.

METHOD Free2
VAR_INPUT
    p       : REFERENCE TO PVOID; // the given pointer is reset to zero after deletion
END_VAR

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4024.7

IPC oder CX (x86, x64, ARM)

Tc3_DynamicMemory