Relação Malloc e Realloc, Como ele lida quando o espaço requerido não está disponível na memória [duplicado]

Duplicata Possível:
funções realloc e 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);
   }
}

Tome este exemplo para o código, suponha que a memória total é de 10 bytes e 2 bytes é usado pela declaração de ponteiro para digitar int e ohter 6 bytes por função malloc os 2 bytes restantes são ocupados por outros programas, agora quando eu executo função realloc para estender a memória para a qual o ponteiro está apontando, ele procurará 10 bytes na memória e, quando não estiver disponível, aloca 10 bytes de memória da área de heap e copia o conteúdo do malloc e o cola na nova área de memória alocada na área de heap. então apague a memória armazenada no malloc certo?

O realloc () retorna um ponteiro NULL porque a memória não está disponível? Não está certo! Ele vai para a área de heap para a alocação de memória, certo? Não retorna um ponteiro NULL certo?

Ouça-me: | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |

considere isso como blocos de memória: suponha que 01 a 06 foi usado por malloc () func, 07 e 08 são livres e os últimos 2 blocos i, e 09 e 10 estão sendo usados ​​pela memória de outros programas. Agora, quando eu chamo realloc (p, 10) eu preciso de 10 bytes, mas há apenas 2 bytes livres, então o que o realloc faz? Retorna um ponteiro NULL ou aloca memória forma a área de heap e copia o conteúdo de 01 a 06 blocos de memória para essa memória na área de heap, por favor me avise.

questionAnswers(3)

yourAnswerToTheQuestion