AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls C++ Memoryleak in TUdpSocket durch toggeln des Properties Active
Thema durchsuchen
Ansicht
Themen-Optionen

Memoryleak in TUdpSocket durch toggeln des Properties Active

Ein Thema von matmok · begonnen am 4. Jul 2008 · letzter Beitrag vom 7. Jul 2008
Antwort Antwort
matmok

Registriert seit: 9. Feb 2006
Ort: Köln
22 Beiträge
 
Delphi 2007 Enterprise
 
#1

Memoryleak in TUdpSocket durch toggeln des Properties Active

  Alt 4. Jul 2008, 16:42
Hallo,

ich habe ein Memoryleak wenn ich einen TUdpSocket über das Property "Active" immer wieder an und ausschalte.

Beispiel:
Code:
TUdpSocket   *fUdpSocket;

fUdpSocket = new TUdpSocket(NULL);
while(true)
   {
   fUdpSocket->Active = true;
   Application->ProcessMessages();
   fUdpSocket->Active = false;
   }
delete fUdpSocket;
Was mache ich da falsch? nach ca. 400 mal kommt dann ein WSAENOBUFS Error ("No Buffer Space Available -- A socket operation could not be performed because the system ran out of buffer space or the queue was full."); Danach sogar ein BSOD (Bluescreen) wenn ich im Internetexplorer eine Seite aufrufen möchte...

auch ein komplettes Erzeugen und Freigeben nützt nichts:
Code:
TUdpSocket   *fUdpSocket;

while(true)
   {
   fUdpSocket = new TUdpSocket(NULL);
   fUdpSocket->Active = true;
   Application->ProcessMessages();
   fUdpSocket->Active = false;
   delete fUdpSocket;
   }
Ist das tatsächlich ein bug in der VCL? Kann ich das über API Funktionen wider ausbügeln?

(Ich arbeite mit CBuilder6 auf WinXP)

mfg,
Matmok
  Mit Zitat antworten Zitat
matmok

Registriert seit: 9. Feb 2006
Ort: Köln
22 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Memoryleak in TUdpSocket durch toggeln des Properties Ac

  Alt 7. Jul 2008, 15:22
Hallo,

offensichtlich ist dieses Problem schon in einer neueren Version der VCL behoben worden: Ich habe die Datei "sockets.pas" vom CBuilder6 und vom RadStudio verglichen und den entscheidenen Unterschied in der procedure "Close" gefunden, in der Datei vom CBuilder 6 fehlt einfach das closesocket(FSocket); <siehe Screenshot im Anhang>;

Ich habe jetzt einfach die Datei angepaßt und zu meinem C6 Projekt zugefügt.

mfg,
Matmok
Angehängte Grafiken
Dateityp: bmp sockets_vergleich_328.bmp (865,2 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz