Программирование на C и C++

Онлайн справочник программиста на C и C++

realloc

void *realloc(void *ptr, size_t newsize)

Прототип: 
Описание: 

Функция realloc() изменяет величину выделенной памяти, на которую указывает ptr, на новую величину, задаваемую параметром newsize. Величина newsize задается в байтах и может быть больше или меньше оригинала. Возвращается указатель на блок памяти, поскольку может возникнуть необходимость переместить блок при возрастании его размера. В таком случае содержимое ста­рого блока копируется в новый блок и информация не теряется.

Если свободной памяти недостаточно для выделения в куче блока размером newsize, то возвра­щается нулевой указатель.

Пример: 
Следующая программа выделяет 17 байт памяти, копирует строку «this is 16 chars» в эту об­ласть, а затем использует функцию realloc(), с тем чтобы увеличить размер блока до 18 байт и поместить в конце точку.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char *p;
p = (char *) malloc(17);
if(!p) {
printf("Allocation error.");
exit (1);
}
strcpy(p, "This is 16 chars");
p = (char *) realloc (p,18);
if(!p) {
printf("Allocation error.");
exit (1);
}
strcat (p, ".");
printf(p);
free(p);
return 0;
}