CALLOC in c

CALLOC in c
„Die Nutzung und Zuordnung von Speicher oder Speicherplatz in einem System wird als das Wichtigste in jedem Programmierskript angesehen, wenn Sie viele Daten in Form von Variablen und Arrays haben. Die C-Sprache ist sehr dynamisch, wenn es darum geht, Speicher zuzuweisen, da sie viele speicherspezifische Funktionen darin enthält. Eine dieser Funktionen ist CALLOC (). Eine zusammenhängende Zuordnung ist ein anderer Name für den "CALLOC". Diese C -Sprachmethode verteilt einen dynamischen Speicher für einen bestimmten Typ. Diese Technik wird verwendet, um die gewünschte Anzahl von Speicherblöcken eines bestimmten Typs dynamisch zuzuordnen.”

Dieser Ansatz ist der Malloc -Methode der C -Sprache ziemlich ähnlich, aber es gibt zwei Unterschiede nachstehend:

  1. Jeder Block in dieser Funktion erhält eine Null -Initialisierung, und ein bestimmter Typ wird zugewiesen.
  2. Im Vergleich zu Malloc enthält es zwei Argumente oder Parameter.

Syntax

(Guss-Typ*) CALLOC (n, Größe);

Wir können den zurückgegebenen Speicher auf einen beliebigen geeigneten Speichertyp geben, da diese Funktion einen Hohlraumzeiger auf die erforderliche Adresse im Speicher zurückgibt. Zum Beispiel:

ptr = (int*) CALLOC (20, sizeof (int));

Der obige Code wird verwendet, um 20 integergröße zusammenhängende Speicherblöcke zuzuordnen, die jeweils 20 Elemente enthalten.

Beispiel 1

Beginnen wir mit dem Schreiben eines einfachen Code. In diesem Beispiel verwenden wir Visual Studio, um ein leeres C -Projekt zu erstellen und eine Datei mit dem Namen Forkexample hinzuzufügen.c im Quelldateien -Verzeichnis/im Ordner. Untersuchen Sie den Code im Abschnitt unten. Die ersten beiden Zeilen in der Stichprobe unten werden verwendet, um die erforderlichen Header -Dateien einzuschließen. Dann beginnt die Hauptfunktion. Beachten Sie die Verwendung von (float*), um den Hohlraumzeiger in einen Float -Zeiger zu verwandeln. Dieser Befehl innerhalb der Hauptfunktion zuordnet zusammenhängenden Speicherplatz mithilfe der CALLOC -Funktion für 25 Elemente, die jeweils der Schwimmergröße sind.

Da dieser Speicher dynamisch ist, wird er zugewiesen, wenn die Datei ausgeführt wird. Es wird jedoch veröffentlicht, nachdem der Ausführungszyklus des Programms abgeschlossen ist. Es zeigt nur, wie eine Speicherzuweisung mit der CALLOC -Funktion durchgeführt werden kann. Dem Benutzer auf dem Bildschirm wird dem Benutzer keine spezifische Ausgabe vorgelegt, da keine Druckfunktion verwendet wird. Die bedingte Aussage muss verwendet werden, um festzustellen, ob das Speicher zugewiesen wurde oder nicht.

#enthalten
#enthalten
int main ()
float* a = (float*) calloc (25, sizeof (float));
Rückkehr 0;

Beispiel 2

Die ersten beiden Zeilen des folgenden Beispielcodes enthalten die erforderlichen Header -Dateien. Die Hauptmethode startet dann. In der ersten Zeile der Hauptfunktion geben wir den Punktdatentyp an eine Ganzzahl und verwenden die CALLOC -Funktion, um 25 Speicherblöcke mit einer Ganzzahlgröße zuweisen. Wir haben in der folgenden Zeile eine Variable vom Typ Ganzzahl deklariert, die wir später verwenden werden, um die Ausgabe auf dem Bildschirm anzuzeigen. Im folgenden Satz verwenden wir die IF -Bedingung, um festzustellen, ob der CALLOC -Punkt einen Nullwert zurückgibt oder nicht. Nur unter diesen Umständen, beispielsweise wenn eine Zuordnung fehlschlägt oder Speicherplatz nicht zugewiesen wird.

In dieser Situation verwenden wir die Printf -Funktion, um die Meldung „Speicher nicht erlaubt“ anzuzeigen, oder „CALLOC konnte den Speicher nicht zuweisen.Wir zeigen die Erfolgsnachricht auf dem Bildschirm auf eine andere Weise. Die Eingabe des Benutzers wird in der nächsten Zeile erfasst und in der früher deklarierten Variablen gespeichert.

#enthalten
#enthalten
int main ()
int* pointer = (int*) calloc (25, sizeof (int));
int a;
if (pointer == null)
printf ("Speicher nicht zugeteilt.\N");
anders
printf ("Speicher erfolgreich mithilfe der CALLOC -Funktion zugewiesen.\N");
scanf ("%d", & a);
Rückkehr 0;

Hier ist die Bildschirmausgabe, die zeigt, dass die CALLOC -Methode den Speicher erfolgreich zuteilt.

Versuchen wir, diese Prozedur zu fehlschlagen, indem wir eine kleine Änderung des oben gezeigten Codes vornehmen. Dazu müssen wir die Größe der Anzahl der Elemente erhöhen, die diese Größe erfordern. Dieser geänderte Code modifiziert nur die erste Zeile der Hauptmethode, legt die Anzahl der Elemente fest und übergibt den Wert 2500000000000000000 an die CALLOC -Funktion.

#enthalten
#enthalten
int main ()
int* pointer = (int*) calloc (2500000000000000000, sizeof (int));
int a;
if (pointer == null)
printf ("Speicher nicht zugeteilt.\N");
anders
printf ("Speicher erfolgreich mithilfe der CALLOC -Funktion zugewiesen.\N");
scanf ("%d", & a);
Rückkehr 0;

Das Programm wird erfolgreich ausgeführt, wenn wir den Code ausführen, aber der CALLOC gibt NULL zurück, was darauf hinweist.

Beispiel 3

In diesem Beispiel fordern wir die Eingabe des Benutzers in Bezug auf die Anzahl der Elemente an, die zum Speichern der Speicherblöcke erforderlich sind. Die erforderlichen Header -Dateien sind in den ersten beiden Zeilen der Datei enthalten. Die primäre Main () -Funktion beginnt dann. Wir haben 4 Variablen vom Typ Integer -Typ in der Hauptfunktion deklariert, von denen die erste eine Variable vom Zeigertyp ist, die hauptsächlich zum Speichern der Ausgabe der CALLOC -Funktion verwendet wird. Der Rest der Variablen ist einfache ganze Zahlen. Der Kunde wird aufgefordert, die Anzahl der Elemente einzugeben, für die für die folgende Zeile Speicherzuweisung erforderlich ist.

Für die Zuweisung von Speicherblockgrößen verwenden wir die Größe der Größe von der Größe des Ganzzahl -Datentyps. Die ganzzahlige Eingabe des Benutzers wird unter Verwendung der SCANF-Funktion erhalten. Die Ausgabe der CALLOC -Funktion wird dann verifiziert, um festzustellen, ob sie erfolgreich war oder nicht. Wenn der Speicherzuweisungsvorgang erfolgreich ist, werden keine Nullwerte zurückgegeben. Wenn das Ergebnis gefunden wird, zeigen wir eine Erfolgsnachricht an und verwenden dann eine für Schleife, um den Benutzer für seine Markierungen über alle Themen hinweg aufzufordern.

#enthalten
#enthalten
int main ()
int* Zeiger;
Int Nelements, Markierungen;
int sum = 0;
printf ("Anzahl der Elemente eingeben (Subjektdaten) erforderlich:");
scanf ("%d", & nelements);
pointer = (int*) calloc (nelements, sizeof (int));
if (pointer == null)
printf ("Speicher nicht zugeteilt.\N");
exit (0);
anders
printf ("Speicher erfolgreich mithilfe der CALLOC -Funktion zugewiesen.\N");
für (int i = 0; i < nElements; i++);
int marks = 0;

Wir werden die Gesamtpunktzahl des Benutzers mithilfe der Speicherzuweisungsvariablen anzeigen. Daher fordern wir den Benutzer auf, die Anzahl der Elemente oder Fächer einzugeben, für die die Speicherzuweisung in erster Linie nur für diesen Zweck erforderlich ist. Nachdem der Speicher ordnungsgemäß zugewiesen wurde, verwenden wir eine Zeigervariable, um die Themenmarken zu speichern. Die Markierungen für jedes Subjekt werden später in der für die for -Schleife angezeigt, und die Summe der Markierungen wird am Ende mithilfe der Schleife zum Ausführen der Summenfunktion angezeigt.

printf ("Geben Sie die Markierungen des Themas ein (%d):", i);
scanf ("%d", & Marks);
Zeiger [i] = Marks;
printf ("Die Studentenfächer markieren \ n");
für (int i = 0; i < nElements; ++i)
printf ("Betreff %d - [ %d] \ n", (i+1), pininyer [i]);
sum = sum+pointer [i];
printf ("Gesamtmarken: %d", sum);

scanf ("%d%", & nelements);
Rückkehr 0;

Hier ist die Ausgabe des obigen Snippet -Code:

Abschluss

Dieser Artikel zeigt die CALLOC -Speicherfunktion in C unter Verwendung von drei verschiedenen, aber einfachen Beispielen. Die Beispiele erläutern, dass diese Speicherzuweisung fehlschlägt und einen Nullzeiger zurückgibt, was darauf hinweist, dass es sich um einen Fehler über die CALLOC -Funktion von C handelt.