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();
}
↧