freien Speicher anzeigen
-
Hi,
ich hab ein sehr Speicherintensives Prog geschrieben und hab das Problem, dass der Speicher ständig voll ist. Wie kann ich den freien Speicher anzeigen lassen, sodass das Prog ab einem gewissen Wert keinen Speicher mehr reserviertSchon mal thx für alle Antworten!
-
es ist zwar nicht gerade die beste & sauberste methode, aber du kannst doch folgendes probieren. schreib eine routine, die versucht einen riesigen speicherblock zu allokieren. wenn das fehlschlägt, einfach stückchenweise die größe des zu allok. speichers verkleinern, bis es klappt. dann hast du die größe des freien speichers (natürlich musst du den erfolgreich allokierten speicherbereich wieder freigeben) das geht also wunderschön mit iteration.
long freemem (void) { long mem_size = 1024*1024*1024*1024; // 1 TB schafft er best. nicht... char far * ptr = NULL; while (ptr == NULL) ptr = new char far[--mem_size]; delete ptr; return (mem_size); }
cu todo
[ Dieser Beitrag wurde am 03.01.2003 um 16:37 Uhr von todo editiert. ]
[ Dieser Beitrag wurde am 03.01.2003 um 16:38 Uhr von todo editiert. ]
-
- wirft new bad_alloc wenn es fehlschlaegt und 2) ist das einfach nur kaese!
Jedes OS bietet funktionen mit denen man den RAM auslesen kann - diese soll man benutzen.
-
ja, ich weiß... - codetags! habs vergessen, sorry
cu todo
-
Original erstellt von todo:
**1 GB schafft er best. nicht...
**hast du den virtuellen speicher vergessen?
-
Selbst wenn es funktionieren würde, der Ansatz mit --mem_size ist drollig. Wäre ein echter Renner geworden.
-
na selbst 1 GB virtueller speicher is ne menge. das das geht is mir klar. aber wenn man so viel virtuellen speicher hat, sollte man keine Probleme wie NOOBie haben...
was meine geile routine angeht: man muss sich zu helfen wissen
cu todo
-
Original erstellt von todo:
habs vergessen, sorryOT: Man kann Beiträge hier auch editieren
[ Dieser Beitrag wurde am 03.01.2003 um 16:36 Uhr von nman editiert. ]
-
Original erstellt von todo:
aber wenn man so viel virtuellen speicher hat, sollte man keine Probleme wie NOOBie haben...Denk noch mal nach: Mein RAM hat 5ns Zugriffszeit, bei meiner Festplatte sinds 10ms...
-
ich denke es geht generell darum, einfach "speicher zu haben" wie lange das dauert is da doch nur zweitrangig. so habe ich zumindest sein problem aufgefasst
cu todo
-
Theoretisch hat man auf einem 32Bit System übrigens einen Virtuellen Speicherraum von 4GB (rechnet euch das mal für 64Bit Platformen aus ;))
-
ganz einfach: 2^64 Byte :p
cu todo
-
mir ging es nicht um den Rechenweg, sondern darum, dass ihr mal ein Vorstellungsvermögen davon bekommt
-
ach neeee....
cu todo
-
wie heißt die funktion für WinME und wie kann ich sie nutzen ?
-
->WinAPI: (zumindest für 98)
void GlobalMemoryStatus (LPMEMORYSTATUS)
schau in der MSDN nach für _MEMORYSTATUS
-
Thread verschoben ins WinApi Forum.
WinAPI