wie kann man zwei buffer speichersparend zusammenfügen?
-
noobLolo schrieb:
earli schrieb:
Das ist etwas off-topic, aber eigentlich ist dein Projekt schon irgendwie verkorkst, dass es überhaupt 1-Mio-elementige Arrays gibt. Ihr solltet euch vielleicht eine andere Repräsentation der Daten überlegen.
das ist nicht nur off-topic, sondern auch eine haltlose vermutung, woher willst du wissen mit was für daten die jonglieren müssen?
auch hier im forum gilt der grundsatz „in dubio pro reo“
lg lolo
Ich hab zwar nicht explizit gefragt, aber eigentlich ging es um "Erfahren und Helfen".
Auf jeden Fall gibt es in dem Beispiel char-Arrays mit 100+921600 Elementen.
-
sind das schon GB oder noch MB
-
Ich hab das Problem mehr oder weniger gelöst.
Ich konnte den großen Buffer verkleinern (jpeg-Kompression (640*480*3=921600)) auf ca 25000. das kopieren in einen 3ten buffer (größe von 1+2) blieb mir aber dennoch nicht erspart.
LG
-
JPEG kann doch nur mehr Aufwand kosten als reines kopieren.
-
Das schon, aber letzten Endes verringert sich der Aufwand, da die Daten übers Netzwerk versendet werden.
Aber der Zweck meiner Frage war ja nur ob es eine Möglichkeit der schnellen und speichersparenden Zusammenfügung von Buffern gibt - und das wurde beantwortet.
-
pointercrash() schrieb:
kimmi schrieb:
Meines Wissens nach kann realloc Speicherbereiche nicht direkt vergrößern. Intern legt auch er einen größeren Buffer an und kopiert den alten Inhalt in den neuen Buffer.
Darauf läuft's zwar meistens hinaus, heißt aber nicht, daß realloc das nicht kann. realloc() prüft meist, ob der direkt angrenzende Heapblock ausreichend für die anstehende Vergrößerung ist und verzichtet im Positiv- Fall auf das Umkopieren. Wer gesicherte Timings braucht, sollte aber auf realloc verzichten, weil's mal so, mal so kommt.
Wieder was gelernt, das war mir noch nicht bewußt.
Gruß Kimmi