Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Jul 2012
Aber komisch witzig, daß es hier lief. (hab die Dateien dahingehend überarbeitet)
Nja, also die 5 größten Blöcke sind waren bei diesem Test 1.509.504 , 192.192 , 121.664 , 35.328 und 25.088 Kilobyte.
Und da passen nur maximal 5 Blöcke mit je 256 MB rein, selbst wenn rein rechnerisch 7,62 reinpassen würden.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Jul 2012
Hier läuft es durch ... Wo knall es denn?
Ohne Fehlerbeschreibung kann keiner helfen. :wall:
Nja, es wird einfach in einer Schleife versucht immer wieder einen möglichst großen Block (den aktuell Größten) zu reservieren.
In der inneren Schleife werden verschiedene Größen ausprobiert und es wird sich der möglichen Größe so lange angenähert, bis es grade noch so rein passt.
Wenn man nun...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Jul 2012
Nicht?
Setlength(..., 1024*1024*256); fordert für das dynamische Array 268435456 Felder an, was durch SizeOf(Byte) der einzelnen Felder natürlich den 256 MB entspricht und dazu dann noch 2 Integer für die Verwaltung des Arrays (Größe und Referenzzählung).
Button1 = Deines
Button2 = Sucht die größten Speicherblöcke
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Jul 2012
physical (Windows) ... Virtual (Programm)
hatte oben nochmal editiert
schön, daß es beim Editieren keine RedBox gibt
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Jul 2012
Phys gibt den Speicher vom gesamten Windows an ... Was aber in deinem Programm, also im "virtuellen" Speicher, belegt/frei ist und was du demnach wirklich verwenden kannst, ist damit nicht ausgesagt!
Und du forderst "zusammenhängenden" Speicher von 256 MB + 8 Byte an.
Wenn kein so großer zusammenhängender Block mehr da ist, dann *peng*.
Übeall fein verteilt liegt genutzter...