Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++

Speicherbereiche anlegen und freigeben (new und delete)

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Erfahren Sie in diesem Video die neue Schreibweise, um dynamisch Speicher zu reservieren. Der Trainer zeigt Ihnen die Verwendung von "new" und "delete", indem er das vorherige Beispiel abändert.

Transkript

Für C++ hat man eine neue Art und Wiese, Speicher zu allozieren, definiert und zwar mit Hilfe von new und delete. Und das zeige ich Ihnen jetzt mal, wie da funktioniert. Ich habe irgendwas vorbereitet, wir haben einen Buffer (buff) mit "Hallo Welt", einen Pointer auf dem Charakter (char) und einen Pointer auf dem long. Und jetzt machen wir erst mal für den long. Das alloziere ich , mit dem ich jedes Mal grundsätzlich zeige, und dann habe ich ein bisschen was vorbereitet Das geht einfach mit new, und hier schreibt man jetzt dahinter den Datentyp. Das war es eigentlich schon. Jetzt kann ich mit *pmeinedaten zum Beispiel hier etwas reinschreiben, noch mal hier iregendwas anderes, cout *pmeinedaten, das Ganze auf der Consolle ausgeben, und ich muss es am Schluss wieder freigeben, das ist wichtig, dafür nicht vergessen, damit da keine Speicherlücke entsteht. Das macht man, indem man den delete Befehl verwendet und pmeinedaten dahinter schreibt. So, jetzt probieren wir das mal aus, dass ich da hier auch keinen Fehler gemacht habe. Schauen wir mal an! Da 123. Da passiert es gar nichts weiter Aufregendes. Jetzt zeige ich Ihnen mal bisschen komplexere Beispiele, nämlich mit den arrays , die wir hier anlegen wollen, und zwar möchte ich jetzt hier als Nächstes mal das kopieren, das "Hallo Welt" in einem weiteren String, und da zwar habe ich jetzt folgende Schritte- und hier mal die Leerzeichen noch auskopieren. So, cptr = new char, das ist so ähnlich, wie das oben ist - new long, aber hier muss ich jetzt in eckigen Klammern natürlich die Feldlänge angeben. Das ist die Syntax noch [] kann, es ist kein Funktionsaufruf, sondern eingebaute Befehle von C++ Compiler. Dann kann ich mit strcpy_s ganz gewohnt das ganze kopieren, +1 immer Anlegen nicht vergessen wegen der 0, wir verwenden hier die c-Strings, und dann auf der Consolle ausgeben, und mit delete, eckige Klammer "auf"-"zu" wären arrays gelöscht. Jetzt starte ich das Ganze mal ohne Debug, und da bekomme ich mein "Hallo Welt", das ist eigentlich kein großes Geheimnis, was jetzt hat es sehr schönes. Kopiere ich das mir gerade mal aus meinem vorbereiteten Notizblock. Ich kann natürlich jetzt hier einen neuen Pointer anlegen, ich habe ihn gerade freigegeben, sonst würde ich den Speicher leer herumstellen lassen, und kann das Ganze mal starten. Da kopiere ich jetzt einfach vier Buchstaben, eine Fehlermeldung kommt natürlich automatisch bei strcopy_s, wenn man zu viel kopiert, schauen wir mal, Test funktioniert auch nicht ganz gut. Und den Pointer mit meinen Daten, den kann man auch mit einbeziehen, da kopiere mir jetzt mal in ein großes Feld hin. Auch da habe ich ein gleiches Beispiel vorbereitet, mache ich das mal hier ein bisschen noch übersichtlicher. Das fängt hier pmeinedaten = new long, in eckigen Klammern [MYLEN]. Das habe ich hier oben das definiert mit 10 Elementen. Machen wir das mit Konstanten, das ist besser, und dann von 0 bis MYLEN, MYLEN nicht eingeschlossen, initialisiere ich wieder meine Quadrattabelle und gib sie anschließend hier einfach wieder aus. Das kann man so machen, das kann man auch als Feld schreiben, und mit delete, eckige Klammer "auf"-"zu" wird das Ganze gelöscht. Und das schauen wir uns jetzt noch am Schluss an, wie es aussieht. Da habe ich hier jetzt schon die Tabelle. Diesmal habe ich hier noch Index mitausgegeben, dass es ein bisschen übersichtlicher ist das Ganze, also hier vorne der Index. Ja, mit dem delete und new können wir sehr schön arbeiten. Hier sollte man auch auf 0 abfragen, muss man aber bei den neuen Compilern nicht mehr da gucken Schutzveletzung, was aber auch unschön ist. Es gibt noch ein paar Varianten von new mit Klammern, indem man in den Klammern noch Parameter zu steuern angeben kann, den klassischen Weg, zum Beispiel kann man damit noch beschreiben. Ich schaue mal, ob es dazu noch eine Hilfe gibt, wenn man hier F1 drückt. Das ist eigentlich die Methode, mit der Sie Hilfe bekommen, muss ein bisschen aufpassen, indem ich in dem Compiler auch das Richtige finde, die h jetzt. Da kann man hier also noch mehr machen und kann hier noch Grüße angeben, Objekttypen, und nothrow wäre jetzt zum Beispiel so einen Fehlervermeidungssystem, dass keine Fehlermeldung kommt, und mal schauen, ob es unten Beispiele gibt. Manchmal gibt es ein paar Beispiele dazu. Hier sieht man jedenfalls mal, wie wir das Ganze machen können. Hier unten haben wir noch ein Beispiel. new int, also mit Klammer auf Klammern zu statt eckige Klammer, funktioniert es auch, dann wird eben diese Funktionsform verwendet. Mal schauen, was wir hier unten noch haben. Da gibt es noch ein paar Beispiel dazu, wie man das anwenden kann. Das row will mich noch interessieren, das ist diese Geschichte hier. Hier muss man jetzt drauf achten, Charakter könnte hier auch 0 sein. Hier wird das einfach ausgegeben. Wenn der Bereich nicht groß genug ist, eben im Hauptspeicher gibt es hier unter Umständen einen 0 Wert und eben keine Fehlermeldung, kann man dann halt selber auch prüfen, das delete würde dann aber wahrscheinlich auch crashen. Wenn hier der 0 rauskommt, müsste man hier also noch bisschen mehr tun, ansonsten kann man das so lassen, wie gesagt, hier braucht man eine Abfrage Das ist die Idee eigentlich. Also, mit der Hilfe kommen Sie eigentlich auch immer weiter, weil jeder dieser Befehle hat oft verschiedenste Unterarten. Das ist schon ganz praktisch. Wenn man da mal nachschauen kann,kann man das auch nicht übermerken. Nicht alles verwendet man in seinem Programm, was es gibt, sondern nur immer so die gebräuchlichen Sachen, damit kann man hier auch ganz gut arbeiten im Normalfall.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!