Speicherzuweisung in C:
Die Ressourcen sind ständig Mangelware. Wir haben immer daran gearbeitet, den Einsatz von Ressourcen zu verbessern. Dies war die Grundlage unserer Entwicklung. Speicherzuweisung ist eine Vorstellung, die mit diesem Ziel zusammenhängt. Damit tatsächliche Variablen erstellt werden können, muss der Speicher den Variablen zugeordnet werden, die wir konstruieren. Es gibt jetzt eine Unterscheidung zwischen dem Denken, wie wir denken, und wie sie passieren. Wenn wir daran denken, alles zu machen, denken wir daran, von Anfang an zu beginnen. Wenn jedoch ein Computer eine Variable 'x' herstellt, ist es eher einer Verteilung; Das System wählt nur eine Speicherzelle für X aus einem breiten Pool verfügbarer Speicherzellen aus. Es ist wie ein Hotelzimmer, der dem Namen einer anderen aus vielen freien oder freien Räumen zugewiesen wird. Dieses Beispiel hat höchstwahrscheinlich klargestellt, wie der Computer die Speicherzuweisung verwaltet.
Jetzt zu den Arten der Speicherzuweisung, die in der C -Programmiersprache zulässig sind, sind statische Speicherzuweisung und dynamische Speicherzuweisung. Wenn wir Variablen definieren, setzen wir alle Variablen ein, die verwendet werden, damit der Compiler versteht, was wir tun.
Beispiel für echtes Leben
Wenn wir Variablen deklarieren, weist der Compiler sie freien Speicherräumen zu, als ob er in einem Hotel mit bereits bestehenden leeren Zimmern, die verschiedenen Namen des Gastes zugeordnet werden, zugewiesen werden. Wie Sie sehen können, geschieht dies, bevor das Programm ausgeführt wird. Sie können diesen Ansatz nicht verwenden, um Variablen zuzuweisen, während das Programm ausgeführt wird. Hier kommt die dynamische Speicherzuweisung ins Spiel.
Programmierbeispiel
Nehmen Sie ein Array als Beispiel, wenn die Größe zuvor deklariert wird, und Sie können die Größe eines Arrays nicht anpassen, sobald es deklariert wurde. Es ist möglich, dass das von Ihnen angegebene Array nicht groß genug ist. Sie können während der Laufzeit die Erinnerung manuell zuweisen, um dieses Problem zu beheben. Dies wird als dynamische Speicherzuweisung bezeichnet. Es gibt mehrere Bibliotheksfunktionen in der C -Programmierungssprache, die uns hilft, Speicher dynamisch zuzuweisen, die in der Header -Header -Datei „“ definiert sind. Die Funktionen sind wie folgt:
Die Syntax für die Malloc -Funktion
Malloc ist die Abkürzung der Speicherzuweisung. Ein Speicherblock mit der angegebenen Anzahl von Bytes ist in der malloc () -Funktion reserviert. Es gibt auch einen Hohlzeiger zurück, der in jede Art von Zeiger verwandelt werden kann. Die Syntax für die Malloc -Funktion in der C -Programmierung ist unten geschrieben:
#p = (castType*) malloc (Größe);Wenn wir einen Ausdruck für die Zuweisung von Speicher für eine Ganzzahlvariable schreiben würden, würde dies so aussehen,
p = (int *) malloc (100 * sizeof (int));Der oben geschriebene Code legt 400 Bytes Speicherplatz beiseite. Der Grund dafür ist, dass der Ganzzahl -Datentyp eine Größe von 4 Bytes hat. Der Zeiger „P“ verfolgt das Startbyte des zugewiesenen Speichers.
Syntax für CALLOC () -Funktion
Eine zusammenhängende Zuordnung ist die Abkürzung des Begriffs „CALLOC.In der C -Programmierung wird die Funktion CALLOC () verwendet, um eine bestimmte Menge Speicher zuzuweisen und anschließend auf Null zurückzusetzen. Diese Speicheradresse wird als Hohlraumzeiger zurückgegeben, der anschließend in den erforderlichen Typ konvertiert werden kann. Die Funktion akzeptiert zwei Argumente, die die Menge an Speicher bestimmen, die als Ganzes zugewiesen werden soll. Die Syntax für CALLOC () -Funktion in der C -Programmierung ist unten geschrieben:
P = (castType*) CALLOC (n, Größe);Jetzt werden wir uns mit der Realloc -Funktion in der C -Programmierung befassen.
Die Realloc () -Funktion in C:
Realloc steht für die Neuzuweisung. Die Realloc () -Methode kann verwendet werden. Die Realloc () -Funktion gibt einen Zeiger auf ein neues Objekt mit der Größe zurück, die nach Größe bereitgestellt wird, und beauftragt das alte Objekt, auf das PTR verwiesen wird. Bis zu den kleineren der beiden Größen ähneln die Elemente des neuen Objekts denen des vorherigen Objekts vor der Deallokation. Alle Bytes in dem neuen Objekt, die größer als die Größe des alten Objekts sind, haben undefinierte Werte. Realloc () sollte nur für dynamisch zugewiesenes Speicher verwendet werden. es ist nichts wert. Das Verhalten ist nicht bekannt, ob der Speicherraum nicht dynamisch zugewiesen ist.
Syntax für die Realloc () -Funktion
Die Syntax für die Realloc () -Funktion in der C -Programmierung ist unten geschrieben:
# Realloc (PTR, neue Größe);Im obigen Ausdruck ist Realloc eine Funktion, die den von PTR gezeigten Speicherort verändert. Der Titel der Zeigervariablen, die geändert werden muss, lautet "PTR". "Neue Größe" bezieht sich auf die neue Größe des Speicherbereichs. Es hat das Potenzial, kleiner oder größer als die vorliegende Größe zu sein.
Obwohl all diese Funktionen erfolgreich den Speicherplatz bereitgestellt haben, sind sie noch nicht frei und wir müssen sie explizit befreien. Hier ist die Funktion Free () erforderlich, um den zugewiesenen Speicherplatz im Speicher zu befreien. Die Syntax für die Funktion Free () ist unten geschrieben:
#Free (ptr);"PTR" ist der Zeiger Name, dessen Speicherplatz freigelassen wird.
Jetzt werden wir uns mit der Ausführung der Realloc () -Funktion im Ubuntu 20 befassen.04 Umgebung.
Implementierung der Realloc () -Funktion in Ubuntu 20.04:
Wie wir über die Grundlage der Realloc () -Funktion wissen, können wir diese Funktion jetzt im Ubuntu 20 implementieren.04 Umgebung. Starten Sie das Terminal von Ihrem Ubuntu -Desktop aus und geben .c Datei mit dem Namen und der Erweiterung von .C. Gehen Sie dann zu Ihrem Desktop und finden Sie Ihre und öffnen Sie Ihre .c Datei. Jetzt erstellen wir einen Code in dieser Datei, um die Realloc () -Methode zu verwenden, um den Speicher zu vermitteln.
Zunächst haben wir die beiden bedeutendsten Bibliotheken der C -Sprache hinzugefügt. Danach haben wir unser Hauptprogramm begonnen. Wir haben eine Zeigervariable deklariert und ihren Wert gleich „Null“ gemacht. Dass wir die Realloc () -Methode verwendet und zwei Parameter hinzugefügt haben. Die Anweisung "Wenn" wird hinzugefügt, um die Bedingung zu überprüfen. Wenn die angegebene Bedingung in Ordnung ist, führt der Compiler die PRINTF -Anweisung aus.
Schließen Sie nach dem Drücken der Schaltfläche Speichern die Datei. Kehren Sie zum Terminal zurück und geben Sie "G ++" ein, gefolgt von Ihrem Dateinamen und dem ".C ”Erweiterung zum Erstellen der Ausgabedatei. Sie können diese Datei nun durch Eingeben ausführen “./”Gefolgt von Ihrem“.OUT ”Erweiterung, um die gewünschte Ausgabe zu erhalten.
Wie Sie sehen können, haben wir den Speicherraum des Zeigers mithilfe der Realloc () -Methode effektiv neu zugefügt und haben jetzt ein besseres Verständnis dafür, wie diese Funktion aufgrund dieses Beispiels in einer C -Anwendung funktioniert.
Abschluss:
In diesem Tutorial haben wir das Konzept der Gedächtnisverteilung und seiner verschiedenen Typen untersucht. Der Zweck dieses Artikels bestand darin, die Vor- und Nachteile der Speicherallokation zu erfahren und wo sie verwendet werden sollen. Die verschiedenen Funktionen in der Methode Dynamic Memory Alloclocation wurden in diesem Artikel ebenfalls ausführlich detailliert erörtert. Am Ende haben wir auch die Realloc () -Funktion in der C -Programmiersprache in Ubuntu 20 implementiert.04 Umgebung, um dieses Konzept besser zu verstehen.