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
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.