Bug im vector der .NET 2003 STL ?



  • Hi!

    Nach langer Fehlersuche habe ich hier ein kurzes, nicht allzu komplexes Progrämmchen, das eine Stack-Check-Assertion innerhalb der STL von Microsoft's Visual C++ .NET 2003 auslöst:

    #include <vector>
    
    struct Test {
      int x[16384];
    };
    
    int main() {
      std::vector<Test>().resize(1);
    }
    

    Das Problem tritt auf, wenn die Struktur grösser als 65536 bytes und das Programm im Debug-Modus kompiliert wird.

    Ulkig auch, dass der Fehler sogar innerhalb von resize auftritt, wenn dieses eigentlich eine do-nothing-Operation sein sollte:

    int main() {
      std::vector<Test> t;
    
      t.push_back(Test());
      t.resize(1);
    }
    

    Mir ist keine Begrenzung von 64k bytes im std::vector<> bekannt und wenn ich die resize()-Methode vermeide funktioniert's ausserdem einwandfrei. MSVC6 hat damit ebenfalls keine Probleme.

    Hat es tatsächlich so ein idiotischer Bug durch die Qualitätskontrolle von Dinkumware UND Microsoft geschafft ?



  • da hast du aber einen ganz gemeinen bug gefunden 😉

    aber mal ernsthaft: schreib deine bugmeldung am besten mal an micro$oft.
    vielleicht können diese den bug aus der welt schaffen bzw. dir weiterhelfen.

    denn wenn es ansonsten einwandfrei funktioniert versteh ich leider nicht so recht wo dein problem ist.

    ich weiss nicht ob m$ irgendwo die max. grössen der container verzeichnet hat gehe aber mal frech davon aus.
    am besten du versuchst diese zu finden und solltest du nichts finden schreib halt an m$ und bete, dass dir geantwortet werden möge.


Anmelden zum Antworten