Stack overflow bei einem 600*600 2D-Array



  • Hallo Leute, ich will in einem 2-dimensionalen Array mit der Größe 600 mal 600 etwas abspeichern. Nun bekomme ich aber diesen Fehler (http://puu.sh/cFzqA/f594af6933.png).
    Mehr als das ahbe ich im Grunde nicht gemacht 😞

    int pArray[600][600];
    


  • Große Objekte gehören auf den Heap und nicht auf den Stack, weil der Stack nicht so groß ist wie du denkst.

    In Visual Studio ist die default size ungefähr 1MB jedenfalls habe ich das auf die schnelle gefunden.

    An deiner Stelle würde ich fuer 2d arrays einen std::vector nehmen und dann deine 2 Dimensionen Koordinaten ausrechnen.


  • Mod

    Wenn die Dimensionen wie hier konstant sind, bietet sich neben einem Container evtl. auch unique_ptr an

    auto pArray = std::make_unique<int[][600]>(600); // erfordert C++14
    std::unique_ptr<int[][600]>(new int[600][600]()); // erfordert C++11
    

    std::array statt rohem Array ist ebenso eine Option.


Log in to reply