Problem mit array bzw vector



  • Hi

    Ich habe ein Problem, dass sich an der Grenze zwischen C und C++ ansiedelt (also wenn falsches Subforum, dann bitte verschieben).

    Ich habe einen Vector als Container der offensichlich bei der Zuweisung eines Wertes auf ein Array "überschrieben" wird. Im Folgenden der Codeausschnitt:

    int mPopulationSize = 10;
    TSequenceIndividualSet tmpIndividuals; // wobei das einfach wieder ein vector ist
    
    ...
    
    int copy_males [mPopulationSize] [2];
    
    ...
    
    int help [0][2];
            for (int i=0; i < mPopulationSize-1; i++)
        {
             for (int j=0; j < mPopulationSize-i-1; j++)
             {
                 if (copy_males [j][1] < copy_males[j+1][1])
                 {
                	 cout << "3.1.a loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                	 cout << copy_males [j] [0] << endl;
                	 cout << "3.1.b loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                	 cout << help [0] [0] << endl;
                	 cout << "3.1.c loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                     help [0] [0] = copy_males [j] [0];
    
                	 cout << copy_males [j] [0] << endl;
                	 cout << "3.1.d loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                	 cout << help [0] [0] << endl;
    
                     cout << "3.1.2 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                     help [0] [1] = copy_males [j] [1];
                     cout << "3.1.3 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                     copy_males [j] [0] = copy_males [j+1] [0];
                     cout << "3.1.4 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                     copy_males [j] [1] = copy_males [j+1] [1];
                     cout << "3.1.5 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                     copy_males [j+1] [0] = help [0] [0];
                     cout << "3.1.6 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                     copy_males [j+1] [1] = help [0] [1];
                     cout << "3.2.7 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
                 }
                 cout << "3.3 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
             }
             cout << "3.4 loop tmpIndividuals.size=" << tmpIndividuals.size() << endl;
        }
    

    der dann nachstehendes Ergebnis liefert:

    3 tmpIndividuals.size=10
    3.3 loop tmpIndividuals.size=10
    3.1.a loop tmpIndividuals.size=10
    1
    3.1.b loop tmpIndividuals.size=10
    8015728
    3.1.c loop tmpIndividuals.size=10
    1
    3.1.d loop tmpIndividuals.size=52745 // hier liegt das Problem!!
    1
    3.1.2 loop tmpIndividuals.size=52745
    ...
    

    Es wird an tmpIndividuals definitiv nichts verändert aber trotzem ändert sich von einer Zeile auf die Nächste die Größe. Ich vermute ja irgendwie, dass das Array mir einen Teil des Vectors überschreibt aber warum? Hat da jemand eine Idee oder kann mir vielleicht weiter helfen?

    lg und danke
    Bernhard



  • int help [0][2];
    

    ...führt bei Benutzung von help mit ziemlicher Sicherheit zu Buffer-Overflows.



  • seldon schrieb:

    int help [0][2];
    

    ...führt bei Benutzung von help mit ziemlicher Sicherheit zu Buffer-Overflows.

    danke!!

    bin schon etwas betriebsblind mittlerweile 😉


Log in to reply