freien Speicherbereich finden



  • Hi,

    wie bekomme ich einen freien Speicherbereich (genannt), in dem ich schreiben kann
    und der nicht vom Stack oder Heap genutzt wird (bzw. nich so schnell).

    "malloc" kann ich nicht nutzen, da dann der Speicher als "unfrei" markiert ist, aber ich brauch "echt freien" Speicher.

    Irgendwelche Ideen dazu.



  • Ich verstehe Deine Frage nicht. Vielleicht erklärst Du Dein Problem ... dann lässt sich sicher eine Lösung finden...



  • Hä? Wenn du auf Speicher arbeitest, der dir nicht gehört, können (und werden)
    andere Funktionen/threads da hineinschreiben... folglich muss da alles
    wie sichs gehört reserviert werden...

    .. was willst du denn machen?



  • Ok. war vielleicht blöd erklärt.

    Problem:
    es gibt eine Library, welche mir eine Seite in freien Bereich mapped. Den freien Bereich muss ich ihr mitteilen.
    Wenn ich aber mit malloc mir ein Addr. hole, wird diese als "unfrei" markiert und die Library kann dort nicht's mehr einblenden.

    Ich habe also meine z.B. 4GB virtuellen Speicher. Von oben wächst(!) der Stack von unten der Heap (ab Programm-Text).
    Dazwischen ist als "richtig freier" Speicher. Und den brauche ich.

    Arch ist x86.

    Danke für eure Hilfe.



  • Hört sich stark nach hardwarenaher Programmierung an. Mit ISO-C wirst Du da nicht weit kommen, weil Du lt. Standard keine andere Möglichkeit hast, auf den Speicher zuzugreifen als mit malloc() & Co. (Zeiger irgendwohin zu setzen ist zwar möglich, aber nicht besonders empfehlenswert) Außerdem ist nicht garantiert, dass der Stack/Heap wirklich "aufbauend" anwächst. Den Speicher bekommst Du normalerweise vom OS und das nimmt sich den Platz, wo halt grad frei ist.



  • 🙂
    das hilft mir nicht wirklich 😞
    Als compiler dient gcc.

    Ich habe gehört, es gitb da symbole, die beim linken angelegt werden und die man mit "extern char irgendwas" zugreifen kann.
    Könnten die mir was nützen? Jemand davon Kenntnis ?



  • extern char test;
    

    bedeutet lediglich, dass in die Variabel "test" vom Typ "char" erst deklariert
    wurde und die definition erst mit dem linken kommt.... etwas blöde ausgedrückt..

    Oder besser: es wird dem Compiler mitgeteilt "hey es gibt da ne Variabel "test"
    vom Typ "char"... aber die kommt erst später dazu...."

    Kann mir fast nicht vorstellen, welche Library sowas von dir verlangen sollte...
    .. um was geht es denn da ? Library? Funktion/Methode ?

    [ Dieser Beitrag wurde am 04.11.2002 um 18:59 Uhr von Solaris'dUKe editiert. ]



  • Hat denn diese Library keine Doku?
    BTW unter welchem OS arbeitest du?



  • ok. wieder blöd ausgedrückt. 🙂
    das mit "extern xyz" war ein hinweis auf die gcc-kenner. gcc soll beim linken symbole anlegen, die mir die größe des textsegments etc. angeben. diese kann ich dann über das extern-zeugs abfragen.
    Der Hinweis ist als Ideen-Anregunfg für euch gedacht !?! 🙂

    ------------------

    Im Prinzip ist das ein Funktionsaufruf. Es ist ein Micro-Kernel zum Testen.
    Die Lib-Doku schweigt sich zu dem Thema aus.


Anmelden zum Antworten