B
Vielen Dank erstmal für die Antworten.
Irgendwie hatte ich schon vermutet, dass der Prof. mir einiges mehr abverlangt, als mein Kenntnisstand erlaubt. (2.Semester )
Aus euren Beiträgen ziehe ich dann folgendes Resümee:
- Ein blöder Fehler hat sich bei meiner Rechnung eingeschlichen (ich weiß nicht warum ich Byte in Bit umgewandelt habe *peinlich*) und natürlich ist Kilo 1024 und Mega dementsprechend 1024^2 *danke für den Hinweis*
- werde ich eine Konstante für die Anzahl verwenden
-
Last but not least hat Martin G natürlich vollkommen Recht, wenn er sagt dass ein solcher Test bei einem System mit virtuellem Speicher wenig Sinn macht, da hier die Laufzeit durch swappen beeinträchtigt wird, eh eine Wirkung durch Speichermangel auftaucht.
Daraufhin habe ich mir den Wikipedia-Artikel Virtueller Speicher angeschaut.
[ Quelle: http://de.wikipedia.org/wiki/Virtueller_Speicher ]
Das habe ich so verstanden, dass eine virtuelle Adresse der Daten im Arbeitsspeicher liegt, aber die eigentlichen Daten evtl. auf der Festplatte ausgelagert sein können. Somit macht es wohl keinen Sinn zu versuchen den Arbeitsspeicher vollzumachen.
Interessant kann es ja trotzdem sein, zu analysieren wie sich das Swapping dann auf die Laufzeit auswirkt.
Was die Speicherallokation angeht: Wenn Dein int daten[ANZAHL] nicht selbst in einem Objekt liegt, welches auf dem Heap allokiert wurde, wird Dir ohnehin der Stack um die Ohren fliegen. Hier wäre tatsächlich sinnig, den entsprechenden Platz dynamisch zu reservieren.
Momentan habe ich mein int daten[ANZAHL] in der main-Function stehen. Von dort aus wird Heapsort aufgerufen, dabei wird die Adresse auf daten(auf das erste Feldelement) und die Größe des Feldes übergeben.
heapsort(daten, ANZAHL);
Bisher kenne ich nur folgenden Befehl für die Speicherreservierung von Feldern, zB:
int *daten = new int[feldgroesse];
// ... zum schluss ...
delete[] daten;
Sollte ich dies so praktizieren, damit "nichts" mehr schief gehen kann?
Ich nehme mir eure Hilfe zu Herzen und werde gleich versuchen, dies umzusetzen.
Trotzdem würde ich nicht sagen, dass ich das Programm in die Tonne werfen sollte.
Noch einmal vielen Dank für eure schnellen Antworten.
Gruß
butze