Der Stapel um die Variable '' wurde beschädigt

7
%Vor%

Ich schreibe ein Schlachtschiffspiel. Ich habe die Board-Layouts funktioniert und die Computer nach dem Zufallsprinzip Schiffe erzeugt. Jetzt arbeite ich an dieser Methode, um den Benutzer aufzufordern, Koordinaten für die Schiffe einzugeben. Wenn ich das Programm starte, kann ich 5 Schiffe eingeben. Wenn ich das 6. Schiff betrete, gibt es mir diesen Fehler.

  

Der Stapel um die Variable location wurde beschädigt.

Ich habe online nach Antworten gesucht und nichts Exklusives gefunden.

Jede Hilfe wäre willkommen.

    
bluetickk 27.02.2011, 20:57
quelle

4 Antworten

5

Sie fordern die Speicheradresse von location array für Ihren Benutzer an. Sie sollten die Standortindizes separat erfragen:

%Vor%

Beachten Sie int location[2]; , da ein Array der Größe 1 nur ein Element enthalten kann. Ich habe auch den Elementtyp in int geändert. Das Lesen von Zeichen von der Konsole führt zu ASCII-Werten, die wahrscheinlich nicht Ihren Vorstellungen entsprechen.

    
Tugrul Ates 27.02.2011, 21:02
quelle
12

location ist ein Array eines einzelnen char .
Es gibt keine location[1] .

    
SLaks 27.02.2011 21:00
quelle
3

Sie haben die Variable location nur in der Lage, ein einzelnes Zeichen zu halten. Sie greifen darauf zu und erwarten mindestens 2 Zeichen. Wenn Sie cin verwenden und erwarten, genau zwei Zeichen zu lesen, wäre eine bessere Methode:

%Vor%     
SoapBox 27.02.2011 21:01
quelle
3
%Vor%

location ist ein Array von einem char . Dies kann nicht erfolgreich sein, da, wenn Sie von einem Stream in ein char -Array lesen, ein Null-Terminator hinzugefügt werden muss (was ein Zeichen benötigt). Sie werden die Grenzen des Arrays unweigerlich überschreiten.

Sie können std::string verwenden, um Probleme mit dem Pufferüberlauf zu vermeiden:

%Vor%

Beachten Sie auch, dass Sie die Zeichenfolgendarstellungen der Zahlen wahrscheinlich in numerische Werte konvertieren müssen. Sie können dies einfach tun, indem Sie aus dem Stream stattdessen zwei int -Objekte lesen:

%Vor%     
James McNellis 27.02.2011 21:04
quelle

Tags und Links