Run-Time Check Failure #2 - Stack around the variable 'Arr' was corrupted
-
Hallo,
ich bekomme die oben stehende Fehlermeldung für den folgenden Code und ich wollte wissen ob mir wer sagen kann warum.
#include <iostream> using namespace std; int bubbleSort(int Arr[], int size) { int i, j, temp; for (i = 0; i < size; i++) { for (j = 0; j< size; j++) { if (Arr[j] > Arr[j + 1]) { temp = Arr[j]; Arr[j] = Arr[j + 1]; Arr[j + 1] = temp; } } } for (i = 1; i <= size; i++) { cout << Arr[i] << " "; } cout << endl; return Arr[i]; } int main(int argc, char** argv) { int Arr[] = { 1, 4, 5, 7, 6, 8, 3, 9, 2, 12, 10}; int size = sizeof(Arr) / sizeof(Arr[0]); if (sizeof(Arr) / sizeof(Arr[0]) != size) { cout << "Ungueltig." << endl; } else { bubbleSort(Arr, size); } cout << size << endl; system("pause"); return 0; }
-
Du greifst in deiner Schleife (schreibend) auf Arr[j + 1] zu.
Wenn j jetzt (size-1) (letzter Schleifendurchlauf), überschreibst du Arr[size].
Das Element existiert aber nicht!