[DLL] Freigabeprobleme



  • Hi!

    Ich möchte gerne eine DLL programmieren. Bislang lief alles Problemlos. Nun gibt es jedoch eine Stelle an der es möglich ist, dass eine Variable entweder in der DLL oder von Hand außerhalb der DLL reserviert werden kann mit malloc.

    Das Problem ist die Freigabe des Speichers.
    Speicher der in einer Funktion der DLL reserviert wurde lässt sich im Hauptprogramm nicht wieder mit delete freigeben und Speicher der im Hauptprogramm reserviert wurde lässt sich nicht in einer Funktion der DLL freigeben.

    Ich will jetzt nicht extra noch Variablen setzen, die angeben ob das Paket im Programm oder in der DLL reserviert wurde. Wie kämpft man dagegen an?



  • _ProfEich schrieb:

    Ich möchte gerne eine DLL programmieren. Bislang lief alles Problemlos. Nun gibt es jedoch eine Stelle an der es möglich ist, dass eine Variable entweder in der DLL oder von Hand außerhalb der DLL reserviert werden kann mit malloc.

    Das Problem ist die Freigabe des Speichers.
    Speicher der in einer Funktion der DLL reserviert wurde lässt sich im Hauptprogramm nicht wieder mit delete freigeben und Speicher der im Hauptprogramm reserviert wurde lässt sich nicht in einer Funktion der DLL freigeben.

    Ich will jetzt nicht extra noch Variablen setzen, die angeben ob das Paket im Programm oder in der DLL reserviert wurde. Wie kämpft man dagegen an?

    1. mit malloc reservierter Speicher muss wieder mit free freigegeben werden.
    2. klingt nach globalen objekten. versuche das auf jeden fall zu vermeiden! falls das nicht geht, könntest du die variable/speicher in eine klasse tun. die zerstörung übernimmt dann der destruktor.

    mfg



  • EDIT[Ich sehs ein] 😃 😃

    mfg JJ



  • Das mit malloc und free war schon klar, habe einfach drauf los geschrieben. Aber trotzdem danke.

    Bezüglich dem eigentlichen Problem:
    Ich habe sogesehen eine Liste mit Objekten in einer Klasse der DLL. Diese Klasse kann entweder über eine "Laden"-Funktion aus der DLL gefüllt werden oder durch den Benutzer.

    Naja. Sonst werde ich wohl Funktionen dafür erstellen um den Speicher für die Objekte zu reservieren.



  • afaik haben programm und dll zwei verschiedene heaps. dass du den speicher, der in der dll auf heap a reserviert wurde dem programm als zu heap b gehörig verkaufen könntest geht also nicht.
    ohne genauere kenntnisse deiner anforderungen ist es, denke ich, schwer, dir eine befriedigende lösung anzubieten.
    auf jedenfall gehört deine frage eigentlich nicht in dieses forum, da standard c++ sich mit so sachen wie dlls etc. nicht beschäftigt.
    am besten du benutzt einmal die suchfunktion im das winapi-forum, kann mir gut vorstellen, dass dieses problem schon des öfteren dort aufgetaucht ist.
    dorthin verschiebe ich den thread deshalb jetzt auch.



  • Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten