Segmentation Fault?
#1
geschrieben 08. Dezember 2008 - 15:17
Ich habe folgendes Problem: Ich will ein Programm schreiben das den BubbleSort mit dem Typ int in C++ implementiert. Wenn ich selber die Zahlen in den Array eingebe funktioniert alles tadellos. Nun wollte ich mit der Funktion rand() zufällige Zahlen, mit dem Befehl *(arr + i) = rand(1); in den Array geben. Kompilierung funktioniert ohne Probleme, nur wenn ich das Programm dann ausführen will kommt der Fehler "Segmentation Fault".
Könnt ihr mit bitte sagen wie ich diesen Fehler umgehe, oder funktioniert sowas nur unter Windows, da ich lieber unter Linux, bzw unter OS X code als unter Windows.
Danke schonmal im Voraus.
amdXP
Anzeige
#2
geschrieben 08. Dezember 2008 - 15:29


CCNA - Cisco Certified Network Associate
DropBox Online Sync-Speicher
#3
geschrieben 08. Dezember 2008 - 15:47
#include <iostream>
#include <cstdlib>
using namespace std;
void BubbleSort(int *arr, int len);
void Print(int *arr, int len);
int main(){
int *arr, len;
cout << "How many items should the array sort? ";
cin >> len;
// geneating random numbers
srand(time(0));
for(int i = 0; i < len; i++)
*(arr + i) = rand();
BubbleSort(arr, len);
Print(arr, len);
}
void BubbleSort(int *arr, int len){
for(int i = 0; i < len; i++){
for(int j = 0; j < i; j++){
if(arr[i] > arr[j]){
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
void Print(int *arr, int len){
for(int i = 0; i < len; i++)
cout << arr[i] << " ";
cout << endl;
}
#4
geschrieben 08. Dezember 2008 - 16:04
*(arr + i) = ....
auf ein Array zugreifen?
Wieso nicht so?
int main(){
int len;
cout << "How many items should the array sort? ";
cin >> len;
int arr[len];
srand(time(0));
for(int i = 0; i < len; i++)
arr[i] = rand();
BubbleSort(arr, len);
Print(arr, len);
}
Weiß nicht ob es so mit len geht aber sieht mir viel logischer aus als deine Variante, bei der du nichtmal Speicherplatz allokierst.
Dieser Beitrag wurde von Tazzilo bearbeitet: 08. Dezember 2008 - 16:11
#5
geschrieben 08. Dezember 2008 - 16:19
#6
geschrieben 08. Dezember 2008 - 16:19
Zitat
Was das jetzt mit Linux, Mac OS X oder Windows zu tun hat, frag ich mich aber!?
Dieser Beitrag wurde von Lofote bearbeitet: 08. Dezember 2008 - 16:20
#7
geschrieben 08. Dezember 2008 - 16:33
Das wegen Windows, Linux und OS X ist ne längere Geschichte weil wir in der Uni diesen Radix Sort austesten wollten, der auf dem Windows Rechner vom Prof zwar funktionierte aber nicht auf meinem Macbook. Da war der gleiche Fehler, Segmentation Fault.
#8
geschrieben 08. Dezember 2008 - 16:35
Das Problem verstanden, warum es bei dir vorher nicht tat, haste aber? Das ist sehr wichtig beim Programmieren lernen, dass man die Fehler versteht
#9
geschrieben 08. Dezember 2008 - 16:38

Hilfe
Neues Thema
Antworten

Nach oben


