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!


Anmelden zum Antworten