Verfügbaren RAM prüfen
-
Hallo zusammen,
Der Titel ist vielleicht etwas verwirrend. Folgende Problematik:
Ein Programm, dass Messwerte von einem Gerät ausliest soll einen Recording-Modus erhalten. Das Programm soll also in einem definierbaren Intervall Messwerte holen und speichern. Zum Speichern verwende ich einen STL-Vector. Ich möchte dem Anwender keine Einschränkung geben, aber irgendwann wird auch mal der RAM voll sein.
Daher die Frage: Wie geht man bei sowas vor? Den verfügbaren RAM über WINAPI-Funktionen auslesen und ausrechnen, wieviele Datensätze ich speichern kann?
-
Einfach in einer Datei speichern?
-
Nö, hab ich eigentlich nicht vor, dann muss den den Scheiß ja wieder einlesen.
Mir schwebt sowas vor, dass man den RAM, den man zur Verfügung hat abfragt und dann quasi eine maximale Anzahl von Datensätzen errechnet. Wenn die erreicht ist, ist Schluß mit dem Recording.
-
Wenn kein geeigneter Speicher mehr da ist, sollte
vector::resizeeinbad_allocwerfen, welches du abfangen kannst.
-
Okay, danke für den Hinweis.
-
DarthZiu schrieb:
Mir schwebt sowas vor, dass man den RAM, den man zur Verfügung hat abfragt und dann quasi eine maximale Anzahl von Datensätzen errechnet. Wenn die erreicht ist, ist Schluß mit dem Recording.
Sehr unprofessioneles Denken. Baue deine gespeicherten Daten als Ringspeicher auf, wenn der voll ist, lösche die ältesten Daten um Platz für neue Einträge zu schaffen.
-
DarthZiu schrieb:
Mir schwebt sowas vor, dass man den RAM, den man zur Verfügung hat abfragt und dann quasi eine maximale Anzahl von Datensätzen errechnet. Wenn die erreicht ist, ist Schluß mit dem Recording.
Hi,
aber da waere ja schon mal das Problem, dass wenn du jetzt die Anzahl ausrechnest und ne Sekunde spaeter startet ein Prgramm das unmenge an Speicher verschlingt was dann!?