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


Anmelden zum Antworten