Speicherverwaltung und max. Größe beim Verwenden von <vector> ?
-
Hallo,
habe gerade mit einem kleinen Win32-Konsolenprogramm (Visual C++ 2008 EE) eine Textdatei zeilenweise in einen String Vector eingelesen.
Aufgefallen ist mir dabei, dass max_size() dieses String-vectors sowohl auf einem aktuellen PC (2GB RAM, Win XP) als auch auf einem älteren Notebook(512MB RAM, Win 2000) denselben Wert von 153.391.689 anzeigt.
Diese max_size() scheint also nicht abhänig von der RAM-Größe zu sein.
Das bring mich zur Frage, wie <vector> die Speicherverwaltung organisiert?
Wo nimmt sich <vector> den Speicherplatz her, wovon ist die Maximalgröße abhänig?Danke für jede Info dazu.
Gruß
Sergeant
-
Sergeant schrieb:
Diese max_size() scheint also nicht abhänig von der RAM-Größe zu sein. Das bring mich zur Frage, wie <vector> die Speicherverwaltung organisiert?
Wo nimmt sich <vector> den Speicherplatz her, wovon ist die Maximalgröße abhänig?max_size
gibt nur die theoretische max-größe zurück:
std::numeric_limits<size_type>::max()/sizeof(value_type)
ist also nur davon abhängig, ob du nen 32bit oder 64bit Programm schreibst
speicherverwaltung ist über den allocator geregelt - standardmäßig also genau so, wie du dir das dachtest:new[]/delete[]
btw: es gibt auch noch ne auslagerungsdatei ;o)bb