Relacja Malloc i Realloc, w jaki sposób radzi sobie, gdy wymagane miejsce nie jest dostępne w pamięci [duplikat]

Możliwy duplikat:
funkcje realloc i malloc

#include<stdio.h>
#include<stdlib.h>
void main()
{
  int *p;
  p = malloc(6);
  p = realloc(p, 10);
  if (p == NULL)
  {
    printf("error"); // when does p point to null consider i have enough space in prgrm
                     //memory area but not in memory where realloc is trying to search 
                     //for the memory, I dont know how to explain that try to undrstnd
   exit(1);
   }
}

Weźmy ten przykład dla kodu, załóżmy, że całkowita pamięć wynosi 10 bajtów, a 2 bajty są używane przez deklarację wskaźnika do typu int i o 6 bajtów przez funkcję malloc pozostałe 2 bajty są zajmowane przez inne programy, teraz, gdy uruchomię funkcję realokacji aby rozszerzyć pamięć wskazywaną przez wskaźnik, będzie wyszukiwał 10 bajtów w pamięci, a gdy nie jest dostępny, przydziela 10 bajtów pamięci z obszaru sterty i kopiuje zawartość malloc i wkleja ją do nowego przydzielonego obszaru pamięci w obszarze sterty i następnie usuń pamięć zapisaną w malloc?

Czy realloc () zwraca wskaźnik NULL, ponieważ pamięć jest niedostępna? Bez prawa!? Czy trafia do obszaru sterty dla właściwej alokacji pamięci? Nie zwraca on wskaźnika NULL w prawo?

Posłuchaj mnie: | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |

rozważ to jako bloki pamięci: załóżmy, że od 01 do 06 użyto malloc () func, 07 i 08 są wolne, a ostatnie 2 bloki i, e 09 i 10 są używane przez pamięć innych programów. Teraz, gdy wywołam realloc (p, 10), potrzebuję 10 bajtów, ale są tylko 2 wolne bajty, więc co robi realloc? zwróć wskaźnik NULL lub przydziel pamięć z obszaru sterty i skopiuj zawartość bloków pamięci 01 do 06 do tej pamięci w obszarze sterty, daj mi znać.

questionAnswers(3)

yourAnswerToTheQuestion