Speicherlecks finden?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Globale Variablen in der DLL werden beim entladen der DLL freigegeben. Wenn Du also einen erhaltenen String nicht einer neuen Variable zuordnest, bevor Du die DLL entlädst, ist der Pointer ungültig.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

remi_meier hat geschrieben:Was meinst du, wieso du Rückgabestrings immer als Global definieren musst?
Das verstehe ich jetzt nicht, also man kann doch laut PB-Hilfe problemlos einer Procedure einen String als Rückgabewert übergeben.
procedure.s test()
procedurereturn testvar

Wenn man aber von eine Procedure einen String zurück bekommen kann, warum nicht auch von einer DLL? soweit ich weiß müßte das gehen. Testen kann ich aber frühsten morgen oder übermorgen.

Und auf das allocieren und freigeben von speicher müßte auch "DLLübergreifend" gehen.
MRK-Soft hat mal eine TCP.dll erstellt (MRK hat glaube ich auch die easydb.dll erstellt /galaxy) und dort kommt man einen speicherbereich erstellen, den übergeben und mußte nichts mehr löschen, weil die dll das tat. oder umgekehrt.
Da eine Dll wohl wirklich wie ein "eigenes programm" arbeitet, aber den selben speicher des hauptprogrammes teilt, sollte das doch wirklich möglich sein. besonders wenn für dll und hauptprogramm Purebasic genommen wird.

heute komme ich da nicht mehr zum testen. versuche es aber morgen mal. Könnte mir höchstens Vorstellen, das PB die Speichervergabe (MEmory, Variablen, Strukturen) intern verwaltet und das nicht abhängig zum Speicherbreich macht, nicht direkt. dann würde es natürlich Probleme geben. Ich habe da aktuell "leicht ähnliches Problem" mit Strukturen.
könnte von Grunde her das selbe selbe sein.

Aber das bekommen wir bestimmt noch raus :-)
Bis später.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Also das mit dem globalen String Rückgabewert hab ich immer gedacht das müsse so sein weil sonst am Ende der Procedure der String gefreet wird und es dann doof ist. Naunja ddlls sind komisch. AAber ich liebe sie trotzdem.
Antworten