allokierter Speicher nicht im TaskManager



  • Hallo,

    Wenn ich mit new char[1024000] speicher reserviere müßte doch eigentlich
    im erfolgfall 1000 Megabyte speicher reserviert worden sein. Der Taskmanager
    zeigt dies aber nicht an. Warum nicht?

    Windows 2000

    danke



  • 1. Du reservierst nur 1024000 Bytes. Das macht 1024000/1024/1024 = knapp 1MB.
    2. Du musst den Speicher auch benutzen. Sonst ist der Speicher nur virtuell verfügbar und wird nicht von Windows freigeschaufelt und deinem Programm zugewiesen (-> Auslagerungsdatei).

    Das Benutzen kannst du zum Beispiel so simulieren:

    const unsigned int max = 268435456;
    char* c = new char[max];
    for(;;)
    	c[rand() % max] = 0;
    

    Das rand ist wichtig, denn wenn du sequentiell durchläufst, lagert Windows den gerade ungenutzten Speicher wieder aus.


Anmelden zum Antworten