CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
realloc
realloc
Функция Перераспределяет память. Синтаксис #include<stdlib.h> void * realloc(void *block, size_t size); Файл, содержащий stdlib.h и alloc.h прототип Описание realloc пытается сжать или увеличить предварительно выделенный блок до размера в size байт. Аргумент block указывает на блок памяти, полученный при вызове функций malloc, calloc или realloc. Если block является нулевым указателем, realloc работает также как и malloc. realloc изменяет размер выделенного блока памяти и при необходимости копирует его содержимое в новый блок. Возвращаемое realloc возвращает адрес блока, который может от- значение личаться от исходного. Если блок не может быть выделен или size равно 0, то realloc возвращает NULL. Переносимость realloc доступна в системах UNIX и поддерживается стандартом ANSI C. Смотрите также calloc, farrealloc, free, malloc. Пример: #include<stdio.h> #include<string.h> #include<alloc.h> int main(void) { char *str; /* выделить память под строку */ str = malloc(10); /* скопировать в строку "Hello" */ strcpy(str,"Hello"); /* вывести строку */ printf("Строка: %s\n, Адрес: %p\n",str,str); str = realloc(str,20); printf("Строка: %s\n, Новый адрес: %p\n",str,str); /* освободить память */ free(str); return 0; }
Оставить комментарий
Комментарии
1.
28 октября 2010, 14:56:24
> str = realloc(str,20);
Если памяти мало, будет возвращен NULL и Вы потеряете указатель на свои данные. Лучше так:
char *newstr = realloc(str, 20 * sizeof(*str));
if (newstr == NULL) {
/* обрабатываем ошибку */
return -1;
}
str = newstr;
Если памяти мало, будет возвращен NULL и Вы потеряете указатель на свои данные. Лучше так:
char *newstr = realloc(str, 20 * sizeof(*str));
if (newstr == NULL) {
/* обрабатываем ошибку */
return -1;
}
str = newstr;