Einzelnen Beitrag anzeigen

BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#1

kleine Lücken im Heap optimal verwenden?

  Alt 16. Feb 2010, 09:37
Hallo liebe DP!
Ich bin gerade auf etwas gestoßen, das mich etwas verwirrt.
Wenn ich diesen Code ausführen lasse, und ich die Messageboxen auswerte, dann komme ich zu dem Ergebnis, dass das neue Byte, das ich mir hole, hinten in nagelneuem Speicher angesetzt wird.
(In der zweiten MessageBox ist FreeSmall=TotalFree dagegen FreeBig, Unused sind 0)
Komischerweise gibt es beim erneuten Aufruf des Codes im Selben aufruf wieder die ursprüngliche anzahl.
Woran liegt das? Wie kann ich die "FreeSmall" Blöcke ausnutzen? Bin ich vlt. völlig auf dem Holzweg und diese Methode ist gar nicht geeignet zur analyse des heaps???

Hier der Code, schonmal danke im Vorraus fürs Helfen.

Delphi-Quellcode:
var
  HeapStatus:THeapStatus;
  buf:PByteArray;
begin
  HeapStatus:=getHeapStatus;
  with HeapStatus do
    ShowMessage('TotalAddrSpace :'+IntToStr(TotalAddrSpace)+#13+
    'TotalUncommitted :'+IntToStr(TotalUncommitted)+#13+
    'TotalCommitted :'+IntToStr(TotalCommitted)+#13+
    'TotalAllocated :'+IntToStr(TotalAllocated)+#13+
    'TotalFree :'+IntToStr(TotalFree)+#13+
    'FreeSmall :'+IntToStr(FreeSmall)+#13+
    'FreeBig :'+IntToStr(FreeBig)+#13+
    'Unused :'+IntToStr(Unused)+#13+
    'Overhead :'+IntToStr(Overhead)+#13+
    'HeapErrorCode :'+IntToStr(HeapErrorCode));
  buf:=AllocMem(1);
  HeapStatus:=getHeapStatus;
  with HeapStatus do
    ShowMessage('TotalAddrSpace :'+IntToStr(TotalAddrSpace)+#13+
    'TotalUncommitted :'+IntToStr(TotalUncommitted)+#13+
    'TotalCommitted :'+IntToStr(TotalCommitted)+#13+
    'TotalAllocated :'+IntToStr(TotalAllocated)+#13+
    'TotalFree :'+IntToStr(TotalFree)+#13+
    'FreeSmall :'+IntToStr(FreeSmall)+#13+
    'FreeBig :'+IntToStr(FreeBig)+#13+
    'Unused :'+IntToStr(Unused)+#13+
    'Overhead :'+IntToStr(Overhead)+#13+
    'HeapErrorCode :'+IntToStr(HeapErrorCode));
  FreeMem(buf);
end;
Gruß, Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat