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 gemachtint 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.
-
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.