Forum: PC-Programmierung Array und Stack overflow


von Hansi (Gast)


Lesenswert?

Hallo zusammen,

mein COmpiler hat Probleme mit meinem Array Feld[] und meldet Stack 
overflow, was ist da los?


#include <iostream>

using namespace std;

int main ()
{
  // Variablen
  char Feld[9];


  // Feld mit int-Werten belegen
  for (int i=0; i<10; i++)
  {
    cout << "Zahl fuer Feld " << i+1 << " eingeben: ";
    cin >> Feld[i];
    cout << endl;
  }

  cout << "Gesamtes Feld anzeigen: " << endl << endl;

  // Gesamtes Feld anzeigen
    for (int j=0; j<10; j++)
  {
    cout << Feld[j];
    cout << " ";
  }


  return 0;
}

von Peter II (Gast)


Lesenswert?

üblicher fehler:


char Feld[9];

also 9 einträge

for (int i=0; i<10; i++)

10 einträge!


damit überschreibst du den stack.

von Norbert (Gast)


Lesenswert?

Hansi schrieb:


> mein COmpiler hat Probleme mit meinem Array Feld[] und meldet Stack
> overflow, was ist da los?

Nicht nur der!

>   char Feld[9];

>   for (int i=0; i<10; i++)

Überdenke noch einmal die Größe des Arrays und die Anzahl der 
abgefragten Werte

von Hansi (Gast)


Lesenswert?

Habe es gerade selbst gemerkt. Feld soll 10 Einträge von 0-9 haben, bin 
durcheinander gekommen, danke!

von Plong A. (Gast)


Lesenswert?

Deshalb empfiehlt es sich bei so was Konstanten zu definieren und diese 
dann durchgaengig im Program zu verwenden ;)
1
#define ARRAY_LENGTH 10

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

oder sizeof()

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Michael Reinelt schrieb:
> oder sizeof()

Obacht beim Einsatz von sizeof mit Arrays bei Verwendung als 
Funktionsargument.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Michael Reinelt schrieb:
>> oder sizeof()
>
> Obacht beim Einsatz von sizeof mit Arrays bei Verwendung als
> Funktionsargument.

ich kann dir grad nicht folgen... kannst du das (vielleicht anhand eines 
Beispiels) erläutern?

von Peter II (Gast)


Lesenswert?

Michael Reinelt schrieb:
> ich kann dir grad nicht folgen... kannst du das (vielleicht anhand eines
> Beispiels) erläutern?
1
void f( daten[12] ) {
2
  int i = sizeof( daten );
3
}

von Peter II (Gast)


Lesenswert?

korrektur:
1
void f( int daten[12] ) {
2
  int i = sizeof( daten );
3
}

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Danke. Urgs. Wäre nie im Leben auf die idee gekommen sowas zu 
schreiben...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.