Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.154 Beiträge
 
Delphi 12 Athens
 
#5

Re: Speicherzugriffsverletzung bei Parameterübergabe aus DLL

  Alt 21. Mai 2006, 13:34
Jupp
Das AResultStr := nil; vor AResultStr := PChar(List); kannst'e erstmal weglassen ist "unnötiger" Code.

So könnte man dafür sorgen, das List nicht freigegeben wird.
Wie oben schon gesagt wurde, werden lockale Variablen am Ende der Prozedur freigeben (das Gilt zwar nicht für Objekte/Pointer..., wo nur de Zeiger "gelöscht" wird, aber bei Strings und dynamischen Arrays wird auch der Inhalt mit freigegeben.
Delphi-Quellcode:
AResultStr := PChar(List);
Pointer(AResultStr) := nil; // ändert nur den Pointer auf den String und läßt den Inhalt reserviert
Aber dann musß du dann später den String an der Stelle natürlich auch selber freigeben


[add]
DelphiMM
der DelphiMM shared den Speicher nicht und da dann in jedem Modul ein eigener MM aktiv ist, kann man die Strings "nicht" in ein anders Modul übergeben,
jedenfalls wenn dort dann der Sringinhalt geändert wird, wozu in vielen Fällen auch nur das ändern des Referenzzählers zählt...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat