Array-Element Kopieren

Gast #5649378
Lesenswert?

Hallo,

ich habe ein Problem mit dem Kopieren von Array Werten an eine andere 
Position des Array. Bzw sollen diese einfach getauscht werden (in C++).

Was ich versucht habe, durch den Compiler geht, das Programm aber 
abstürzen lässt:

Arr[Zeile][Spalte + 1] = Arr[Zeile][Spalte];

Arr ist [800][600] groß.

Habt ihr eine Idee, wie ich diesen Tausch anders bewältigen kann?


MfG
Gast #5649405
Lesenswert?

Liegen Zeile und Spalte denn im gültigen Bereich?

Also (Zeile >= 0 && Zeile < 800 && Spalte >= 0 && Spalte < 600-1).

Versuche eventuell ein Minimal beispiel zu erstellen, dass das Problem 
aufweist. Arrayzugriffe sind für sich genommen noch kein Problem.

valgrind und/oder ASAN können bei der Problemsuche auch helfen.
http://valgrind.org/docs/manual/quick-start.html
https://github.com/google/sanitizers/wiki/AddressSanitizer
Persönliche Seite #5649417
Lesenswert?

Sven schrieb:
> Der Absturz Äußert sich wie folgt: Das Programm ist abgestürzt.
> Segementation fault.

Würdest Du Dein Programm im Debugger laufen lassen, würde der Dir sagen, 
welcher Programmschritt dazu führt; Du könntest Dir an dieser Stelle 
Deine Variablen ansehen etc.


Du könntest ja mal Deinen Programmcode zeigen, nicht nur eine komplett 
nichtssagende Zeile.
Persönliche Seite #5649465
Lesenswert?

Sven schrieb:
> for (element = 1; element <= Zeile * Spalte; element++)

Daß in C (und verwandten Sprachen) das erste Arrayelement mit 0 
angesprochen wird, ist Dir irgendwie entgangen?

Wenn Du
1
char bla[10];

hast, darfst Du die Elemente darin nicht so ansprechen:
1
for (i = 1; i <= 10; i++)
2
  machwasmit(bla[i]);

Dann ist es kein Wunder, wenn Dein Programm auf die Schnauze fällt.

Richtig wäre
1
for (i = 0; i < 10; i++)
2
  machwasmit(bla[i]);

Das spricht bla[0] bis bla[9] an.

Das fehlerhafte Beispiel spricht bla[1] bis bla[10] an, bla[10] aber 
gibt es gar nicht ...
Persönliche Seite #5663102
Lesenswert?

Sven schrieb:
> nein, element hat weder mit der Frage, noch mit der Arrayzuweisung etwas
> zu tun. Es ist lediglich ein counter, der für andere Dinge benötigt
> wird.

Ach.

Wie schön, daß wir das anhand des von Dir gezeigten Quelltextes 
nachvollziehen können.

Bist Du eigentlich an einer Lösung Deines Problemes interessiert, oder 
welchen Sinn hat dieser Thread hier?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren