Robert B.: Windows-API: Speicherverbrauch der laufenden Anwendung abfragen

Beitrag lesen

Moin Martin,

hilft Dir das Process Status API weiter?

https://docs.microsoft.com/en-us/windows/win32/psapi/about-psapi

nicht wirklich; einen Teil der dort verlinkten Funktionen hatte ich gestern schon gefunden. Es scheitert immer daran, dass ich zuerst "meine eigene" Prozess-ID herausfinden muss, über deren Herkunft die API-Dokumentation den Mantel des Schweigens deckt.

denk POSIX: Es gibt auch unter Windows getpid.

Neue Anwendungen sollen die Heap-Funktionen verwenden. Die sind auf der genannten Seite verlinkt.

Ja. Aber in der Beschreibung von HeapAlloc() habe ich auch empfindliche Einschränkungen gefunden. Zum Beispiel, dass ich mit HeapAlloc() maximal 0x7FFF8 Bytes am Stück anfordern kann. Das sind knapp 512kB. Mit GlobalAlloc() kann ich dagegen auch mal 12MB am Stück kriegen.

Da dein Programm eh in C ist, könntest du mal testen, wie viel Speicher dir malloc auf einmal liefern kann 😉

Aber eigentlich sollte man Speicherverwaltung über die C Runtime machen und nicht direkt beim Betriebssystem.

Das sehe ich komplett anders. Wenn mir das Betriebssystem direkt eine API-Funktion für eine bestimmte Aufgabe bietet, dann nutze ich die auch direkt, anstatt vergleichbare CRTL-Funktionen, die dann irgendwann auch nur die API-Funktion aufrufen. Deswegen benutze ich auch CreateFile() und Co. anstatt fopen(). Das Ziel ist, dass ein großer Teil der CRTL beim Linken als überflüssig (nicht benutzt) erkannt wird und rausfällt - im Idealfall die komplette Runtime. Das ergibt kleinen, kompakten Code.

Da spricht jemand, der wirklich nur auf einer Plattform arbeitet 😉 Ich habe privat schon unter Mac OS X, Linux und Windows eigenen Software geschrieben und laufen haben wollen – da wollte ich nicht jedes Mal Code portieren.

Viele Grüße
Robert