Fehler bei Speicheranforderung (malloc)



  • Hallo,

    vielleicht kann mir jemand helfen.
    Ich habe ein Programm das knapp unter 2GB Speicher braucht - mit malloc abgefordert. Auf meinem alt Rechner mit W2k funktionierte das auch, dort hatte ich 1,5 GB RAM drin, mein neuer Rechner hat XP und 3,25 GB RAM (eigenlich 4GB).
    Auf dem alten konnte ich die 1,5GB verwenden , auf dem neuen ist bei 1235 MB schluß. Das sieht fast nach einem Überlauf aus. Ich benutzte BCB 6.
    Wie kann ich wenigstens wieder die 1,5GB erhalten?



  • -> WinAPI-Forum.

    Ein möglicher Grund ist eine veränderte Speicherzuteilungsstrategie von Windows XP. Ich hatte die maximal allozierbare Speichermenge einmal bei einem mit 512 MB ausgestatteten Rechner mit Windows XP, dann bei einem mit 4 GB bestückten Windows 2003-Rechner ermittelt; XP teilte pro Anwendung etwa 1150 MB zu, Windows Server 2003 etwa 1400 MB.

    Diese Limits ließen sich anheben mit
    - dem Aktivieren von PAE (das unter Windows 2003 standardmäßig aktiviert ist),
    - dem /3GB-Switch aka 4GT (nur für 32-Bit-Systeme),
    - dem Setzen des LARGEADDRESSAWARE-Flags im PE-Header und
    - dem Umstieg auf ein 64-Bit-System.



  • Nein ,das ist es nicht.
    Ein kurzer Test mit DevCpp geht bis ca. 1942 MB.
    Ich gehe davon aus, dass es am BCB liegt.
    Wenn man von einer Art Überlauf ausgeht, könnte es mit den 1235 MB hinkommen.
    Etwas geht ja für die interne Speicherverwaltung drauf.
    Mir sieht es nach int <> unsigned int aus.


Anmelden zum Antworten