Verständnis zur Speicherreservierung



  • Hallo,

    ich versuche gerade ein Verständnis der Speicherreservierung zu bekommen. Dazu habe ich mir das unten abgebildete Programm geschrieben. Leider wirft er mir ein std::bad_alloc. Dabei ist es ja gar nicht so viel Speicher der reserviert werden muss (8byte für den double * 1e8 ist etwa 760Mbyte). Im Taskmanager sehe ich auch nur ein kurzes zucken beim Arbeitsspeichergraphen.

    Dachte bisher das der Speicher im Heap nur von der Hardware / OS begrenzt ist. Kann ich mehr Speicher reservieren? (Habe ein Win7 64bit System mit 8GByte Arbeitsspeicher).

    Ursprünglich sollte es absichtlich Memory-Leaks verursachen, darum der Zeigername *leak.
    @
    int main(int argc, char argv[])
    {
    QCoreApplication a(argc, argv);
    QList<double
    > list;
    for(int i=0; i<1e8; ++i){
    double *leak = new double(0.2);
    list.append(leak);
    }
    foreach(double *leak, list){
    delete leak;
    }
    return a.exec();
    }
    @



  • Setz mal einen Breakpoint in Zeile 10 und schau es im Debugger an.


Log in to reply