Einzelnen Beitrag anzeigen

Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

Wo ist der Speicherüberlauf??

  Alt 22. Nov 2007, 18:37
HI,

ich hab jetzt ein Programm geschrieben, dass ein Bild übertragen soll. Jetzt ist mir im Langzeittest aufgefallen, dass das Programm unmengen Arbeitsspeicher braucht. Nach der Komprimierung nach JPEG ist die Speicherübernutzung zwar nicht weg, aber immer noch da. Nach rund 100 Zugriffen beendet sich das Programm wegen Speicherüberlauf. Ich hab schon versucht alle Variablen zu zerstören, aber das hilft nicht.

Quellcode:
Delphi-Quellcode:
    Bild := TBitmap.Create;
    MS := TMemoryStream.Create;
    MakeScreenShot(Bild);

    JPEGBild := TJPEGImage.Create;
    JPEGBild.CompressionQuality := 90;
    JPEGBild.Assign(Bild);
    JPEGBild.Compress;

    Bild.Destroy;

    JPEGBild.SaveToStream(MS);
    JPEGBild.Destroy;

    MS.Write('ENDE', 4);
    MS.Position := 0;

    ServerSocket1.Socket.Connections[0].SendStream(MS);

    MS.Clear;
    MS.Destroy;
Wie sich wohl ahnen lässt, ist das ein Schnipsel aus einer ServerSocket1-ClientRead Prozedur.

Bild: TBitmap(lokal);
MS: TMemoryStream(lokal);
JPEGBild: TJPEGImage(lokal);

Vielen Dank im Vorraus für eure Hilfe
rollstuhlfahrer
Bernhard
  Mit Zitat antworten Zitat