stl vector hat nach zufügen von einem element size 678152732



  • Hallo,
    ich habe ein Problem mit einem Vektor. Besagtes Problem tritt eigentlich nur auf, wenn ich die betreffende Methode aus einer dynamischen lib aufrufe, wenn ich das Programm als anwendung kompiliere, taucht der Fehler nicht auf.

    std::vector<Goal> goals;
    Goal singlegoal;
    std::cout << "goalssize before:" << goals.size() << std::endl;
    goals.push_back(singlegoal);
    std::cout << "goalssize after:" << goals.size() << std::endl;
    

    bewirkt:

    goalssize before:0
    goalssize after:678152732
    

    Der Compiler ist:
    gcc-Version 4.3.2 (Ubuntu 4.3.2-1ubuntu12),
    mein makefile lasse ich mit qmake erstellen.

    Jemand ne Idee?

    Gruß,
    Daniel



  • Übergibst du den vector an die dynamische Lib oder etwas in der Art?

    Bei der Verwendung einer Klasse in mehreren Modulen (also z.B. dein Programm + die lib), musst du drauf achten, dass alle Module, die die Klasse verwenden, mit den selben Compilereinstellungen, dem selben ompiler und auf der selben Plattform compiliert werden müssen. Sonst kann es vorkommen dass das binäre Layout der Klasse sich unterscheidet und das eine Modul die Daten die vom anderen Modul kommen falsch versteht.



  • Hi,
    ja ich lasse mir den Vektor später zurückgeben.
    Der bug tritt aber komplett in der lib auf, das ist alles Teil der gleichen Methode. Plattform und Compiler sind gleich.

    Ah, der Fehler tritt nicht auf, wenn ich die lib mit -O3 kompiliere..
    Die anwendung die die lib einbindet ist ohne sonstige flags kompiliert.


Anmelden zum Antworten