Füllen eines Arrays



  • Hey,
    Ich hatte vor, ein Array mit einer vorher bekannten Länge mit Zufallsvariablen zu füllen und dann möchte ich die Summe bestimmen. Nur stürzt mein Programm ohne Fehlermeldung nach einer gewissen Zeit ab und ich weiss nicht, woran das liegen könnte.

    int main(){
    float testArray [2400000];
    
        std::mt19937 generator(12312);
        std::uniform_real_distribution<float>distrib(0,10);
    
        for(uint64_t i=0;i<2400000;++i){
            testArray[i]=distrib(generator);
        }
    
        double summe =0;
    
        auto t1 =std::chrono::high_resolution_clock::now();
        for(uint64_t i=0;i<2400000;++i){
            summe+=testArray[i];
        }
        auto t2 =std::chrono::high_resolution_clock::now();
        std::chrono::duration<uint64_t ,std::nano>dur =t2-t1;
        std::cout<<"Summe: "<<summe<<std::endl;
        std::cout<<"Zeit: "<<dur.count()<<std::endl;
         return 0;
         }
    

    Würde mich über jede Hilfe freuen



  • Du kannst einen Debugger benutzen, um zu sehen wann oder wo das Programm abstürzt.

    Oder du machst noch eine paar Kontrollausgaben. ZB. in Zeile 13

    std::cout<<"Zeile: "<<__LINE__<<std::endl;
    

    Du kannst auch in den Schleifen bei jedem 10000. Durchlauf eine Ausgabe machen.

    Meine Vermutung: Dein Stack reicht nicht für das Array aus.

    Und: Das ist kein C sondern C++, daher falsches Unterforum.
    (bei C würde man malloc nehmen)



  • testArray liegt auf dem Stack, derart große Datenmengen sollten aber im Freispeicher abgelegt werden.

    Da du C++ nutzt, solltest du einfach den std::vector nehmen und nicht selber die Speicherverwaltung übernehmen (mit new + delete).

    #include <vector>
    ...
    std::vector testArray(2400000); // gleich passende Größe übergeben
    // weiter wie gehabt
    


  • Tut mir leid, dass ich mich im SubForum vertan habe. Kann man ja evtl. noch verschieben (falls nötig).
    Sieht tatsächlich so aus, dass das am StackSize gelegen hat.

    Danke für eure Antworten



  • Tut mir leid, dass ich mich im SubForum vertan habe

    Wie kann man sich denn vertun?! Du musst doch wissen, in was du "programmierst" 😕



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • vfbhrtfg schrieb:

    Tut mir leid, dass ich mich im SubForum vertan habe

    Wie kann man sich denn vertun?! Du musst doch wissen, in was du "programmierst" 😕

    Man kann sich auch mal verklicken. Natürlich weiss ich, in was ich programmiere. Dumme Frage....



  • vfbhrtfg schrieb:

    Tut mir leid, dass ich mich im SubForum vertan habe

    Wie kann man sich denn vertun?! Du musst doch wissen, in was du "programmierst" 😕

    Man kann sich auch mal verklicken. Natürlich weiss ich, in was ich programmiere. Dumme Frage....


Anmelden zum Antworten