Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
65K
28 октября 2010 года
МУХ
0 / / 28.10.2010
Мне нравитсяМне не нравится
28 октября 2010, 14:56:24
> str = realloc(str,20);
Если памяти мало, будет возвращен NULL и Вы потеряете указатель на свои данные. Лучше так:

char *newstr = realloc(str, 20 * sizeof(*str));
if (newstr == NULL) {
/* обрабатываем ошибку */
return -1;
}

str = newstr;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог