Hilfe: C-Programm mit unerklärlichem Syntaxfehler

Das Problem von Quicksort ist, dass es sehr viel Platz auf dem Stack (da Rekursiv) benötigt. Wechsle zu Mergesort oder Heapsort - da sollte das nicht passieren.
 
Das Visual Studio entscheidet anhand der Dateiendung welcher Compiler verwendet werden soll, das heißt in einem C File kannst du new oder bool nicht verwendet und natürlcih auch nicht mitten im Code ein chat* definieren.
 
Es gibt auch schon eine vorgefertigte Funktion zum Sortieren in stdlib.h:
void qsort(void *base, size_t num, size_t size, int (*compar)(const void *, const void *))
base = Array;
num = Anzahl der Elemente
size = Größe eines Elements in Bytes
compar = Funktion zum Vergleichen
 
Wenn man den ganzen Stack vollschreibt, ist so ein Absturz logisch. Ich nehme an, dein Quicksort belegt zu viel Stack. Bei rekursiven Funktionen mit hoher Verschachtelungstiefe ist das wahrscheinlich. Du hast 3 Möglichkeiten:

a) Stack erhöhen.
b) Daten- und Programmstruktur so ändern, dass die Verschachtelung nicht so tief wird.
c) Deine Implementation von Quicksort ändern, so dass es nicht mehr rekursiv ist, sondern linear. Dann würden alle deine Daten auf dem Heap und nicht auf dem Stack landen.

Gawayn
 
Habe mein Programm mal unter Linux getestet. Dort läuft es einwandfrei und ich habe keine Probleme mit dem Stack.
Und da ich das Programm nur auf Linux benötige werde ich es dabei belassen.

Aber nur so aus interesse: Wie kann ich den Stack erhöhen?

Vielen Dank für eure Hilfe! Cu Issy
 
Zurück