Hallo, ich möchte gerne einen Adressraum von ca. 200 Speicher-Adressen Reservieren, um dort Adressen zu speichern. Meine Erste Idee war, einfach ein Array der entsprechenden Größe anzulegen und einen Pointer auf die Startadresse zu legen. Jedoch möchte ich nun aber beim Systemstart festlegen, wie viele solcher Blöcke Reserviert werden sollen und außerdem ist die Lösung mit den Arrays unschön :) Also habe ich mich ein wenig schlau gemacht und kam so auf malloc(size);(auch wenn diesen ab 100 byte langsamer wird) Jedoch erhalte ich vom Compiler 2 Komische Fehler Meldungen: //error // file // Line -ld returned 1 exit status collect2.exe 0 -undefined reference to `_sbrk' sbrkr.c 1 1 Nun meine Frage: kann man überhaupt malloc bei einem UC verwenden, oder geht das nur in C(für Computer) und was wären dann eine Alternative? vielen dank basti 195 Code: Pointer_start = malloc(SIZE); UC: SAM4SD32c Compiler: AtmelStudio 7.0
Der Linker sagt Dir, dass er die Funktion _sbrk nicht auflösen kann. Du musst eine Bilbliothek dazulinken, die _sbrk enthält.
Sebastian B. schrieb: > Jedoch möchte ich nun aber beim > Systemstart festlegen, wie viele solcher Blöcke Reserviert werden sollen > und außerdem ist die Lösung mit den Arrays unschön :) Bei der Lösung mit Array siehst Du den Speicherverbrauch nach dem Linken im Map File. Wenn Du malloc() benutzt, fliegt Dir das System (z.B. bei Stacküberlauf in den Heap) u.U. erst beim Kunden um die Ohren. YMMV. Du kannst da immer noch eine Dynamik rein bringen, indem Du z.B. nur einen Teil des Arrays nutzt. Bei 160 KB RAM kann man aber schon über Heap nachdenken. Die "_sbrk()" Funktion sollte in der Doku zum AtmelStudio erwähnt werden - da sollte die Newlib Doku dabei sein.
vielen dank soweit :) ich habe es mit der stdlib.h und der newlib.h versucht, bei beiden sollten das dabei sein. jedoch erhalte ich immer noch den selben Fehler. geht das mit dem Heap den so ohne Probleme und wäre das dann icht overpowered?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.