Laufzeitumgebung, Laufzeitbibliothek, Bibliothek



  • Nimm die Worte nicht zu ernst. Meistens kann man aus dem Kontext erkennen, wovon die Rede ist.

    scheinbar wandelt der c-compiler nicht jede c-funktion um in reinen maschinencode sondern verweist hier teilweise auf die laufzeitbib.

    Das ist der Unterschied zwischen "statischem" und "dynamischem" Linken. Aus der Sicht des Compilers ist das ganz egal. Die Frage ist nur, ob der Linker den Code von zB printf() in die EXE schreibt, oder nur einen Verweis auf eine Bibliothek (dafür muss das Betriebssystem natürlich ein wenig Magie im Hintergrund machen).
    Siehe auch
    http://en.wikipedia.org/wiki/Linker
    🙂



  • MatheStein schrieb:

    mir wird aber leider immer noch nicht der unterschied klar zu einer normalen bib.

    Du darfst ja auch keinen technischen Unterschied suchen. Die Runtime-Lib ist halt einfach nur eine andere Kategorie. Aber sie kann halt technisch einfach nur eine DLL wie jede andere sein. Du mußt das eher so sehen: Runtime-Lib ist obligatorisch, andere Libs sind optional.



  • ich glaube so langsam verstehe ich es 🙂

    welche dinge stehen denn zb in der runtimelib?

    gruß



  • Z.B. die C++-Funktionen new und delete , denn irgendwie muß ja der Speicher für die Objekte angelegt und frei gegeben werden. Die sind ja offensichtlich obligatorisch, um ein C++-Programm zum Laufen zu bekommen. Wenn das nicht zur Verfügung steht, kann ich C++-Programmierung gleich knicken.

    Aber auch andere wichtige Funktionen sind darin enthalten: Behandlung für nicht gefangene Exceptions, exit(), system() usw. In der Runtime-Lib ist auch die Standard-Library enthalten, wie die fstream-Klassen usw.



  • danke für die antwort 🙂

    ich hatte jetzt eher auf ein beispiel in C gehofft, weil mir dort alle funktionen wie systemaufrufe oder abstraktionen von paar assemblerfunktionen vorkommen und ich mir konkret keine funktion einfällt, die in der laufzeitbib sein könnte.

    gruß 🙂



  • malloc, dealloc? Oder wie die Dinger in C heißen.



  • sind das nicht systemaufrufe?



  • Artchi schrieb:

    Z.B. die C++-Funktionen new und delete , denn irgendwie muß ja der Speicher für die Objekte angelegt und frei gegeben werden. Die sind ja offensichtlich obligatorisch, um ein C++-Programm zum Laufen zu bekommen. Wenn das nicht zur Verfügung steht, kann ich C++-Programmierung gleich knicken.

    kannste nicht in C++ objekte z.b. so erzeugen?

    CppObject create()
    {
       CppObject mein_neues_objekt;
       return mein_neues_objekt;
    }
    

    ^^ müsste doch auch gehen, ganz ohne new.

    Artchi schrieb:

    dealloc?

    realloc

    alphaomega schrieb:

    sind das nicht systemaufrufe?

    nee, das sind für gewöhnlich library-funktionen. das OS stellt grössere speicherblöcke zur verfügung (eine k-bytes mindestens), von denen man sich z.b. mit 'malloc' kleinere häppchen abzwacken kann kann.
    🙂



  • ;fricky schrieb:

    ...(eine k-bytes mindestens)...

    äääh, einige, 4K oder so, auf 32bit windowsen.
    🙂



  • ^^ müsste doch auch gehen, ganz ohne new.

    Natürlich, da landet es auch auf dem Stack und es muss kein Heap angefordert werden.


Anmelden zum Antworten