Speichermanagement
-
Gibt es eine Möglichkeit, die Fragmentierung des Speichers zu beseitigen?
Hier ist ein kleines Beispiel der Programmstruktur:
int *feld1=(int*)malloc(10000*sizeof(int)); int *feld2=(int*)malloc(1000*sizeof(int)); //einige Berechnungen feld1=realloc(feld1, 1000*sizeof(int));
Ich gebe ja 36k Byte Speicher wieder frei, dieser wird dann von später deklarierten Variablen benutzt. Trotzdem kommt es zu einer Fragmentierung, wenn im Speicher viele kleine Bereiche freigegeben werden (1 bis 2Byte).
Diesen Effekt würde ich gerne verhindern, weiß aber nicht wie.
-
Eigentlich nur dadurch das du dir eine eigene Speicherverwaltung mit garbage Collection schreibst.
Bei den modernen PC-Systemen, ist solch eine Fragmentierung mit dem Ende des Programms weg. Teilweise sorgt
das OS für eine Art Speichedefragmentierung. Wenn du diese Aktionen nicht einige tausende male in einem Programm machst ist es zwar unschön aber man kann damit leben.
-
Ok,
dann muß ich damit leben.