Segmentierungsfehler abhängig von der Stringlänge?

Ich schreibe ein Programm, das Zeilen aus einer Datei mit getline in Strings liest, die Strings in c-Strings umwandelt, die die ersten m Zeichen ohne Leerzeichen des Strings enthalten, und die c-Strings dann zu einem einzelnen char-Array verkettet.

Eine Beispieldatei könnte ungefähr so aussehen:

5    //number of rows and columns in a grid
2    //number of grids
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX

XXXXX
XXXXX
XXXXX
XXXXX
XXXXX

So würde ich mit einem char Array von 2x5x5 Zeichen enden.Jetzt ist das Problem, dass mein Code in kleineren Testfällen wie dem oben gezeigten gut funktioniert, aber Segmentierungsfehler auftreten, wenn ich ihn in größeren Gittern (d. H. 100x100x100) ausprobiere.

#include <iostream>
#include <string>
using namespace std;
int main(){
  int mapsize,levels;
  cin>>mapsize;
  cin>>levels;
  char map[mapsize*mapsize*levels];
  string input;
  for (int i=0;i<levels;i++){
    for (int j=0;j<mapsize;j++){
      getline(cin,input);
      char *row;
      row=new char[input.size()+1];
      strcpy(row, input.c_str());
      for (int k=0;k<mapsize;k++){
        map[i*mapsize*mapsize+j*mapsize+k]=row[k];
      }
      delete [] row;
    }
  }
return 0;
}

Ich würde dieses Programm mit einem infile aufrufen: ./program <infile.in

Ich habe es mit gdb ausgeführt und einen Backtrace durchgeführt. Es zeigt immer auf die Zeile "Stringeingabe";

Irgendwelche Ideen, wie ich dieses Problem lösen kann? Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage