Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Record New/Dispose resultiert in MemoryLeaks

  Alt 7. Nov 2017, 21:55
// Edit 2:
Hah, jetzt habe ich glaube ich die Ursache: 50.000 mal PostMessage ist zu viel für die Windows Message queue (ist ja auch völlig praxisfern):

Zitat:
There is a limit of 10,000 posted messages per message queue.
Quelle: MSDN zu PostMessasge


// Edit: Nö, ich lag falsch.
Siehe: https://stackoverflow.com/q/4285892/2298252

Ab hier bitte nicht weiterlesen -.-



Da ich in meiner jahrelangen, glänzenden Karriere als Delphi-Entwickler noch kein einziges mal New oder Dispose verwendet habe bin ich mir nicht sicher, aber:

Dispose gibt einfach den Speicher für den Record frei. Dein Record scheint aber mindestens einen gemanagten Typen (String namens "aString") zu enthalten, der wird denke ich nicht vernünftig abgeräumt. Einfach nur der Platz für den Zeiger im Record wird freigegeben, der auf dem Heap angelegte Speicher für den String verbleibt auf ewig als Leiche dort.

Ich habe keine Ahnung wie man es richtig macht, spontan hätte ich gedacht statt Dispose einfach Finalize verwenden. Oder nicht stattdessen, sondern davor? Keine Ahnung. Aber zumindest bei der Ursache könnte ich mir vorstellen richtig zu liegen

Geändert von Der schöne Günther ( 7. Nov 2017 um 22:03 Uhr)
  Mit Zitat antworten Zitat