Отношение Malloc и Realloc, Как это обрабатывать, когда требуемое пространство не доступно в памяти [дубликат]

Possible Duplicate:
realloc and malloc functions

#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);
   }
}

Возьмем этот пример для кода. Предположим, что общая память составляет 10 байтов, а 2 байта используется объявлением указателя на тип int и более 6 байтов функцией malloc. Оставшиеся 2 байта заняты другими программами, теперь, когда я запускаю функцию realloc чтобы расширить память, на которую указывает указатель, он будет искать в памяти 10 байт, а когда он недоступен, он выделяет 10 байт памяти из области кучи, копирует содержимое malloc и вставляет его в новую выделенную область памяти в области кучи и затем удалите память, хранящуюся в malloc, верно?

Возвращает ли realloc () указатель NULL, потому что память недоступна? Без прав!? Это идет в область кучи для распределения памяти правильно? Это не возвращает нулевой указатель, верно?

Listen to me: | 01 | 02 | 03 | 04 | 05 | 06 | 07 |08 |09 | 10 |

Рассмотрим это как блоки памяти: предположим, что с 01 по 06 используется malloc () func, 07 и 08 свободны, а последние 2 блока i, e 09 и 10 используются памятью других программ. Теперь, когда я вызываю realloc (p, 10), мне нужно 10 байтов, но есть только 2 свободных байта, так что же делает realloc? верните нулевой указатель или выделите память из области кучи и скопируйте содержимое блоков памяти с 01 по 06 в эту память в области кучи, пожалуйста, дайте мне знать.

Ответы на вопрос(3)

Ваш ответ на вопрос