Dies ist wahrscheinlich etwas, das leicht gelöst werden kann. Ich habe keine Ahnung, was ich falsch mache, bitte helfen Sie mit diesem super einfachen Code.Segmentation Fault beim Auffüllen eines Arrays
#include <iostream>
using namespace std;
int main()
{
int arraysize, i, a[arraysize], n, j;
cout << "array size";
cin >> arraysize;
for(int i=0, j = arraysize; i < arraysize, j > 0; i++, j--){
a[i] = j;
cout << "a[" << i << "] = " << a[i] << endl;
}
}
Wenn dieses Programm ausgeführt wird, wird es Ausgabe 5 Werte des Arrays, und dann bekomme ich einen Segmentation Fault. Ich habe keine Idee, wie man das repariert und/oder wie man diese Art von Problem richtig ausführt. Jede Hilfe wird geschätzt, danke.
'arraysize' enthält den Wert für den Speicherfehler, wenn Sie das Array' a [arraysize] 'deklarieren. –
[Konnte nicht] (http://coliru.stacked-crooked.com/a/301743aa2694a77a) mit GCC reproduzieren. Verwenden Sie keine VLAs und initialisieren Sie Ihre Variablen nicht, bevor Sie sie verwenden. – Ron
Wie @AditiRawat sagt, "arraysize" enthält Müll an dem Punkt, an dem er zuerst verwendet wurde. Außerdem ist 'int a [array]] nicht gültig für C++, auch wenn in 'arraygröße' ein gültiger Wert vorhanden ist. Einige Compiler erlauben dies als Erweiterung, sollten Ihnen aber zumindest eine Warnung geben, dass das, was Sie tun, nicht koscher ist. –