circle buffer
-
guten Abend
folgendes Problem:
Pufferspeicher mit einer festen Größe. Also Speicher wird immer wieder beschrieben nachdem er gelesen wurde...
Ich soll alle Daten, die noch im Puffer sind, mit einer print-Methode ausgeben.
Die Ausgabe soll mittels einer Schleife ausgeben werden.wichtige Attribute:
- Größe,
- *pointer auf Startadresse(0) des Speichers
- Leseindex, Füllstand(vom Puffer) // dürfen nicht verändert werdenkann ich das so machen oder geht das am Prinzip von dem speicher vorbei..?
pointer+LeseIndex; // zeigt nun auf das erste Element des puffers for(int i=Füllstand;i>0;i--){ // so oft durchlaufen wie Elemente im Puffer cout << *pointer; // gibt ersten Wert des Puffers aus pointer++; // aufs nächste Element zeigenIst der Puffer nun am Ende des Arrays angelangt kann er ja bei Array[0] weiter gehen. Dort sind die weiteren Werte gespeichert, falls vorhanden.
Kann ich das einfach so machen??
int counter=leseindex; for(....... pointer++; counter++; //Zählt den Index mit if(Größe<=counter){ // überprüft ob schon das ende des Arrays ereicht wurde pointer=Array; } //gehe zum Start des Arrays counter=0; }danke und greets
stto
-
Da ist einiges schwer durcheinander. Versuch den Code mal sauber zu schreiben, anstatt nur schnell im Foreneditor hinzuklatschen. Sonst weiß man nicht, was echte Fehler sind oder was du bloß falsch aufgeschrieben hast.
Die Grundidee ist ok, die Umsetzung falsch. Allgemeine Alternative, die eventuell besser (und mit Sicherheit besser lesbar) ist: Modulo.