[Playlisten] [Impressum und Datenschutzerklärung]

09.03.2 weiter dynamischer Speicher, malloc, free


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

dynamischeSpeicher wozu brauche ich denletztes Mal schon ansatzweisegezeigtwenn sie sowas versuchenBau eine FunktionIhnen jetzt mein Passus F übergebe der ?? ein in das ?? kein Lückentext sonderndreißig ?? mal zur Erinnerungwenn sie dann versuchenda eine Rallye zu brausen Beistrich sagen und übermalen paar Gleitkomma Zahlenresultatheißenund in groß sein und dann möchte ich damit arbeiten auf irgend eine Weiseden gibt's im klassischen C und C plus pluswas auf die Finger siebenundneunzigkann es im Prinzip aber die klassischenVarianten und C plus pluskann das nicht die wollen nichtdassso eine Reheine unbestimmte Größe hat während es kompiliert wird wer das Programm kompiliert werden möchte der Compiler sofort sagenokay da reservieren ?? zehn zwanzigachtundneunzigstellenfür diese Gleitkomma Zahlen miteinandergenauso viele nicht mehr nicht weniger beim Kompilierendas heißtvor zehn noch vor C99funktioniert bisher nichtam??ein Problem erstes Problem wenn man mitunbekannten Datenmengen hantiertsie können den Sprachen nicht einfach mal gerade Rays bauten sie eine vorher unbekannte Größe haben seine Größe muss so komm bald seit bestimmt seindas nächste Problemwenn das überhaupt ginge ich repräsentativ?? was bestes hereinwenn sie das Wort machen könntenBeistrich dass man soweit zusammen das eszumindest von der Seite funktioniertangenommensie hätten daseine reelleChance ?? dreizehn rein damit was müdes kombinieren könnendie Frage okay wie könnte das jemand weitergehenkönnte jemand anderes auf dieses Gerät zugreifendasnahe liegendewas einem einfallen würde wäre sie rechnen mit diesem Gerätund geben irgendwanndas ist ja das aber hält sicher wie ein Zeiger warum sollte ich nicht einfach dann ein Zeiger auf dieses Gerät zurückgebenund hier sagen oberste zurück kommt aus der Funktionist ein Zeigerdas könnte man probieren es soll ganz dick dazu sagen das ist falsch was sie was von ihr versucht es falsch das kann soim wahren Leben nicht funktionieren Komma könnte das malversuchen hier hätte ich dann einenZeiger zurückaus meiner Funktion Fin der FrauenBahnsehen das gibt immerhinkein Fehler sondern nur eine Warnung?? man könnte jetzt glauben das folgendes passiert hier wird eine Reh eingerichtet mit dreizehn?? meine Konstanten und kombiniertmit dreizehnPlotsund damit ich woanders weiter arbeiten kann mit dem Gerät geb ich einfach dannden Zeiger auf das erste Element zurückdie Funktion unterschiedliche oben gibt als ein Zeiger auf ein floh zurück und John verwende ich den Zeigerund könnte damit jetzt weiter arbeiten wird im Prinzip sagen ?? schreibt man anstelle soundsovielhundert dreizehn statt Stelle siebendie Zahlzwei ?? dreißig Komma eins float reinmöchte man meinen dass das so funktioniertwarennetterweisedas wenn die meisten Compiler inzwischen Tunverweisen weitere zehn Jahren Punktnetterweise sagt in der Compiler auch nicht gut nicht gutdiese Behandlung hier ist ernst zu nehmen ist es nicht ohne Warnung persönlichkonditionell ein Fehlerdas darf man nicht tundas ist zwar von der Sprache her erlaubt das zu tunaber von der Konzeption her ist es ein Fehler diese Variable hierdieses A mit seinen dreizehn Gleitkomma Einträgen wird automatisch abgeräumtan erinnern beim nächsten Mal bin ich die Funktionenin die Funktion wieder reingehejeden Sache zwar was anders können bei normalen Varianten zum Beispiel hätten sie initialisiertZahninsEndspielgleich soundsovielwohl jetzt diese Variante das nächste Mal steht im Speicherwas weiß ichsie wird zwischendurch abgeräumtals die Gefahr istdaszur Laufzeithier bei dernächsten Schweifklammerdiese Variable wieder abgeräumt wird und anders verwendet für den Entschluss drin steht und deshalb ist es eigentlich verbotenZeiger auf lokale ?? ?? zurückzugebensie wissen nicht was in der Zwischenzeit an der Stelle passiertwas hier auch in der Warnung markiert wird es aber eigentlich nicht meine Warnung ist es richtigfalsch von der Konzeption heralso zwei Probleme mit diesenRaysvorziehen und vor C99kann ich nichtvariable Größen haben die müssen zur Laufzeit bestimmt seinundallgemeines Problem auch mit C99warenlokale Variablen kann ich nicht zurückgebenwie kann ich den mal insgesamtsein Speicherbereichanlegen und weitergebenwie kann ich das weitergebeninnerhalb meines Programms den Speicherbereichhier würde ich Gefahr laufen den sofort wieder zu verlierenkann ein Zeiger finden und damit auch weiter arbeiten Komma worauf der Zeiger nach ?? zeigtsteht in den Sternenund die Lösung für all diese Probleme ist der dynamische Speichernunes gibt'sins StandardLibraryzugeordneteDeklarationengezimmert Doppelkreuz finde daein paar Deklarationenin SDD lebtPunkt Haarfunktionenmit denen nicht Speicher anfordernkannund wieder freigeben kannsie können das System bittendoch einfach mal soundso viele Byteszu reservierenzur eigenen Verwendung für sie zur Verwendung und zum ?? wenn Sie damit fertig sind seines demontiert braucht das nicht mehr sie borgen sich sozusagen paar Schubladenanauf dem Chipwas das Ding zurückgibt wird ein Zeiger seinAnzeige aufdas erste Element in diesem Modus wollte wenn sie wollen und Element in den Speicherbereichder Nichte reservierendie FunktionIndex um elfdie Funktion heißt memoryHello katenlorgwieder so unsäglich abgekürztenOER Location oder manueller Kältespeicherreservierenschon auf Deutsch sagen Speicher reservierenMR lockt?? Komma mit Wasser zwischendieserFunktionsabgrenzungBeistrich denn gerne hätteim Speichersekundeein Versagen sieben unserer sieben dreißigtendierte ihm sieben dreißig Bytes reservieren im Speicherzu eigen Verwendungund damit automatisch wieder ab Punktes ist so als ob sie den Reiseschließfächerreservierenund die werden ihn nachts nicht automatisch wieder ausgeräumtSicherheitsdiensthabentypischerweise wenn man nicht genau sieben dreißig Bytes haben solche möchte verziehen dreißig ins Speichern ?? schreibe ich das so sieben dreißig mal sei es aufinsauf dieser Maschineist der ins zweiBytes lang alles heiß auf ihn gäbe zwei auf einer Maschine mag anders lang sein so weiß ich auf jeden Fall in den Speicherbereichnicht reservierenlassen sieben dreißig ins rein egal wie lang sie sindsei's aussagt wie weit es jeweils in zwei sind dreißig so passen sieben dreißig insgesamt dreiein relativer ein Zeiger zurückmuss von dem Ding unsäglicher Weise nochsagen das es den Zeiger indes den richtigen Typ wann mit dieser Zeiger zeigt erst malauf nichtsvom Typ hermuss immer sagen den Sternchender Zeiger der rauskommen soll den Verwandte bittein ein Zeiger auf indischer?? sieht haarsträubend ausmuslimischen Schuldigen aus oder sind sie ausalso ein Blog sagt er im ?? erlaubt nimmt eine Zahl die sagt wie viele Bytes den reserviert werden sollen im Speichersoundsoviel Schließfächer hätte ich gerne auf meiner folgendsitzen alle miteinanderund im Keller lieferten ein Zeiger auf das erste zurückdas letzte bisschen Haushaltungaus mörderischer Arbeit nochhörendieser Zeiger muss noch einen richtigen Typ verwandelt werden ich möchte nachher ins Speichernalso ein Zeiger auf Wind als?? habenlassen sie nur verwandelnmit dem Ding kann ich dann umgehenwie mit üblichen Reis können dann sagen okay an der Stellezwölf möchte ichzwoundvierzigreinschreibenoder ich möchte irgendwas auslesenspäterwas an derman muss den richtigen Taste haben da was an der Stelle zwölf steht möchte später aufs Lesenauf diese Weiseund so weiter und so fortsie können das Programm hin und her reichendieses B können Sie quer durch alle Funktionen reichen die Funktion schreiben was rein lesen was raus wie auch immerund wenn sie dann irgendwann fertig sind damitsang sie dem Systemokay jetzt können andere Leute auch malso sieht das dann aus freegeben dieser Fonds und vieles also eine Funktion die standardmäßig eingebaut ist der Funktion viel geben Sie den Zeigerund die Funktion fliege dann internveranlassendass das worauf der Zeiger gezeichnet dann anders verwendet werden darfsolange sie das free nicht gebenist das Papierwas sich Dakota basiert in diesem Fall die sieben dreißig mal auf diesem System zwei Bytessind blockiert solange bis sie free gebenden Speicher freigeben ?? sie free aufrufenan eine gute Ideedanachistnoch den Zeiger auf null zu setzenübliches Problemein kompliziertes Programm bauen ist ein übliches Problem das doch irgend eine Funktionwenn mangepennt hatversucht das mit dem Zeiger zu machendas ist fiesweil ich nicht weiß was zwischendurch passiert istalso bis zu dem free war die sieben dreißig mal zwei Bytes reserviertund festgelegtfür michsobald sie free gebenkann irgendein anderer Stelle des Programmssich die Bytes krallen und was anderes damit machenirgendjemandanders werde im Blockaufgerufen habensoll sein irgend eine andere Funktion im Mainprogramm könnte im ?? aufgerufen haben nach diesen Frieden und die dreizehn Bytes wären dann dafür verwendet worden also nach dem sie wissen sie nicht mehr was mit dem Speicherort passiert und man dann das veranstaltetdarauf zuzugreifendanachweiß man nicht was man ruiniertes kann funktionierenes muss sich funktionierenandamit daseher ein Problem gibt damit es ihr auffällt setzt man typischerweise nach dem free sofort diesen Zeiger auf nullfällt zumindest auf wenn sie das Punkt probieren wenn sie auf den Noten zugreifendas fällt zumindest aufnicht auf dem Embedded Controllerhier bemerkt das nicht aber die beschwingt maschinentypischer Mac wird das merken der bisschen bessereSpeicherverwaltungder sieht wenn sie auf die Speicherstellenull zugreifen als hier für die versuchen den Nullpointer auszu werdenandas wird auf dem größeren System das Programm zum Absturz bringendass man typischerweise immer einbauennach dem Friedenden Zeiger noch ausdrücklich auf null zu setzenwaren aus Sicherheitsgründensosieht das vom Prinzip herausvielleicht zeige ich das mal in Aktionwenn ich das aufdie Füße der sowieso im Simulator vor aber wenn ich das hier auf dem kleinen Chipden vier hundert dreißigG ?? zweiter dreiunddreißigzeigesie mir sofort schon ein Problemwardas zum BeispielOP-Filterfür das Bild derAraber Liste sind zur ?? Punkt habe der Sitz zusätzlich den Artikelsowennich das hier veranstalte hochdiese Silosnichtwenn ich das hier veranstalteich hoffe das mirMemory erlaubt Kate ein Zeiger gibt auf diesen reservierten Speicherbereichund sie sind auch der Zeiger ist null??ungültigdas ist die ähm wie Memory erlaubt hätte ?? hat nicht funktioniertwenn es funktioniertliefert es ihn lieber des in einen ordentlichen Zeigerder nicht nur lässtwenn es nicht funktioniert hatin null zurückauf diesem kleinen siebzehn hundert achtundzwanzigbei dranfunktioniertwenn Realität grundsätzlich gar nicht verschicktwarenlohnt sich einfach gar nicht bei den hundert achtundzwanzig Byte ist die Verwaltung die man betreiben müsste wäre so dick dass sie ?? Beistrich dadurch fast vollständig folgteinsofernschlägt der grundsätzlich fehltalles muss man sich auf größeren System genauso testen Wände Modelle geht null zurück liefern heißt dasnicht geklappt ?? typischerweise bei der Speicher voll ist