Realloc- und Malloc-Funktionen

Schauen Sie sich den Code an:

#include<stdio.h>


 #include<stdlib.h>
void main()
{
  int *p;
  p = malloc(6);
  p = realloc(p, 10);
  if (p == NULL)
  {
    printf("error");
   exit(1);
   }
}

Nehmen Sie dieses Beispiel für den Code an, nehmen Sie an, dass der gesamte Speicher 10 Bytes beträgt und 2 Bytes von der Deklaration des Zeigers verwendet werden, um int und weitere 6 Bytes von der Malloc-Funktion einzugeben Um den Speicher zu erweitern, auf den der Zeiger zeigt, sucht er nach 10 Bytes im Speicher. Wenn er nicht verfügbar ist, reserviert er 10 Bytes Speicher aus dem Heap-Bereich und kopiert den Inhalt von malloc und fügt ihn in den neu zugewiesenen Speicherbereich im Heap-Bereich und ein dann lösche den speicher in malloc oder?

Gibt realloc () einen NULL-Zeiger zurück, weil der Speicher nicht verfügbar ist? Kein Recht!? Es geht um Heap-Bereich für die Speicherzuweisung, oder? Es wird kein NULL-Zeiger zurückgegeben, oder?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage