INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

LabVIEW Memory Manager



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

19.02.2009, 09:44
Beitrag #3

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
LabVIEW Memory Manager
Erstmal danke für deine Kommentare.
' schrieb:Bist du sicher, dass da beidesmal zwei Sterne hingehören? Zwei Sterne heißt doch Pointer auf Pointer auf Daten. Für ein 1DArray reicht doch ein Pointer - im Endeffekt also ein PChars (PWideChar). DSNewHClr erzeugt auch nur einen Pointer auf Daten. Da ist mit Array-Handle nichts.
Es wird empfolen dynamische Speicherallozierung mittels Handles vorzunehmen. Wenn ich es nun richtig verstanden habe bedeuten zwei Sterne ein Pointer auf ein Pointer bzw. eine Adresse auf eine Adresse wobei der zweite Pointer eine Adresse auf den Master Pointer beschreibt. Ich fordere mir also Speicher einer bestimmten Größe an und der Memory Manager reserviert den Speicher und fügt diese Adresse in eine Liste des Master Pointers hinzu.
Im Prinzip bin ich mir sehr sicher das diese Allozierung stimmt.

' schrieb:Das wäre ja richtig (fast: muss heißen sizeof(uInt16)*81920, statt nur 81920).
Da hast du denke ich recht, danke.

' schrieb:Hier wird kopiert von pointer zu Pointer. Allerdings beißt sich "(UHandle*)ArrayMemoryHdl" mit der Deklaration "uInt16 **ArrayMemoryHdl;". Du überschreibst hier den Handle, nicht die Daten. Fehlt hier ein & ?
Das könnte auch eine Fehlerquelle sein. In der Beschreibung von MoveBlock steht das zwei Pointer als Übergabeparameter erwartet werden. Der Erste auf die Quelladresse und der Zweite auf die Zieladresse. Könnte also sein das die Übergabe so aussehen müsste:<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>MoveBlock((void*)Datenarray, (UHandle**)&ArrayMemoryHdl, 81920);</div>

' schrieb:Da kann ich jetzt nix zu sagen. Aber ob das Ziel ein Array ist oder ein PChar, sollte dem Befehl egal sein.
Ich denke das sollte funktionieren.

' schrieb:Das ist richtig - bei einem Stern.
ArrayMemoryHdl wurde von mir als Handle deklariert, desshalb sollte auch das stimmen.

Korrigiert mich bitte wenn ich etwas falsches sage. Ich möchte ja auch immer dazulernen ;-)

THX
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
LabVIEW Memory Manager - abrissbirne - 18.02.2009, 11:42
LabVIEW Memory Manager - IchSelbst - 19.02.2009, 08:57
LabVIEW Memory Manager - abrissbirne - 19.02.2009 09:44
LabVIEW Memory Manager - rolfk - 19.02.2009, 09:54
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 10:02
LabVIEW Memory Manager - rolfk - 19.02.2009, 10:11
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 12:00
LabVIEW Memory Manager - rolfk - 19.02.2009, 14:57
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 16:53
LabVIEW Memory Manager - rolfk - 19.02.2009, 17:16
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 18:03

Gehe zu: