AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi kleine Lücken im Heap optimal verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

kleine Lücken im Heap optimal verwenden?

Ein Thema von BrightAngel · begonnen am 16. Feb 2010 · letzter Beitrag vom 16. Feb 2010
 
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
 


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 05:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz