2016-07-12 9 views
0

ich Fehler bekommen, wenn Sie diesen Code kompilieren:C++/Code: Blockiert Problem mit Speicher

int i[720][720]; 

Fehler: Prozess zurück -1073741571 (0xC00000FD).

Es ist in Ordnung, wenn ich erklären:

int i[719][719]; 

was passiert?

EDIT:

Ok ... Ich habe wie Sie gesagt haben. Es funktioniert jetzt. Ich habe versucht, den Code für multiple große Zahlen from here zu korrigieren.

hatte ich auch

 if(carry < 10){ 
      mat[i][j-(SIZE-1-i)]=carry; 
      carry=0; 
     } 

zu

 if(carry < 10){ 
      if (j-(SIZE-1-i) < 0) continue; 
      mat[i][j-(SIZE-1-i)]=carry; 
      carry=0; 
     } 
+4

Das Array ist zu groß, um auf den Stack zu passen. Verwenden Sie stattdessen 'std :: vector'. –

+0

Oder 'neuer' oder irgendein anderer Container (außer' std :: array', der den gleichen Effekt hätte). – HolyBlackCat

+0

Oh, ok ... aber gibt es eine Möglichkeit, die Standardkapazität des Stacks zu erhöhen? Ich weiß, dass ich nur [1000] x [1000] Array brauche. –

Antwort

0

Ihr Stack ist zu klein, zu ändern, und Sie sollten stattdessen die dynamische Zuordnung verwenden (z std::vector oder new). Wenn Sie die Stapelzuweisung weiterhin verwenden möchten, können Sie die Stapelgröße in den Compileroptionen oder in der Befehlszeile erhöhen (abhängig vom Compiler, den Sie nicht angegeben haben).

+3

_ "Ihr Stapel ist wahrscheinlich zu klein" _ - '0xC00000FD' ist eine Stapelüberlauf-Ausnahme, also gibt es hier kein _probably_. –

0

Der Fehler ist, dass Ihr Array zu groß ist, um es im Standard-Stack-Bereich Ihres Compilers zu speichern. Sie können versuchen, Ihren Code auf dem Online-Codechef-Compiler zu kompilieren. Es hat eine sehr große Stapelkapazität. Der Link lautet: https://www.codechef.com/ide

Oder natürlich, ein Vektor std::vector mit nutzen könnten oder dynamisch alloctae Ihr Array mit dem new Schlüsselwort (nicht sehr zu empfehlen).

-2

Warum möchten Sie Arrays dieser Größe erstellen? Um die Speichereffizienz zu erhöhen, verwenden Sie dynamische Arrays, die mit dem Schlüsselwort new deklariert wurden. Beispiel: myArray = new int [10] Sie können entsprechend Ihrem Bedarf und seinem Gedächtnis auch leistungsfähig erweitern.

+0

Ist das eine Frage oder eine Antwort? – Till

+0

@Till Sieht aus wie ein bisschen von beidem –