CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
realloc
REALLOC #include <malloc.h> требуется только для объявления функции char *realloc(ptr,size); char *ptr; указатель на ранее захваченный блок памяти unsigned size; новый размер в байтах Описание. Функция realloc изменяет размер ранее захваченного блока памяти. Аргумент ptr указывает на начало блока. Аргумент size за- дает новый размер блока в байтах. Содержимое блока не изменяется. Аргумент ptr может указывать на блок, который должен быть осво- божден прежде, чем последуют вызовы calloc, halloc, malloc, realloc. Возвращаемое значение. Функция realloc возвращает char-указатель на перезахвачен- ный блок памяти. Блок может быть передвинут, если его размеры из- менены, поэтому аргумент ptr для функции realloc не обязательно должен быть таким же, как и возвращаемое значение. Возвращается значение NULL, если памяти недостаточно, чтобы расширить блок к заданному размеру. Если это происходит, то пер- воначальный блок освобождается. В памяти, на которую указывает возвращаемое значение, га- рантировано выравнивание для хранения любого типа объекта. Чтобы получить указатель на тип, отличный от char, используется преоб- разователь типа возвращаемого значения. См.также caloc, free, halloc, malloc. Пример: #include <malloc.h> #include <stdio.h> char *alloc; /* выбирает достаточно большое пространство для 50 символов */ alloc=malloc(50*sizeof(char)); . . . /* перезахватывает блок, который содержит 100 символов */ if (alloc != NULL) alloc=realoc(alloc,100*sizeof(char));
Оставить комментарий
Комментарии
1.
+2 / -0
8 сентября 2005, 12:31:40
Все правильно. У нее возврат такой-же как и у malloc.
char *dres;
для начала неплохо бы выделить мамять под указатель, а то непятно что вообще собираемся расшириить
dress=(char *) malloc(10);
после этого realloc надо указать тип возвращаемого указателя в скобках. В нашем случае char
dres = (char *) realloc (dres , 20);
итог: вместо 10 байт мы имеем 20 байт с сохраненной в первых 10-ти инфой.
char *dres;
для начала неплохо бы выделить мамять под указатель, а то непятно что вообще собираемся расшириить
dress=(char *) malloc(10);
после этого realloc надо указать тип возвращаемого указателя в скобках. В нашем случае char
dres = (char *) realloc (dres , 20);
итог: вместо 10 байт мы имеем 20 байт с сохраненной в первых 10-ти инфой.
2.
20 марта 2005, 12:26:25
char *dres;
dres = realloc (dres , size * sizeof(char));
error C2440: '=' : cannot convert from 'void *' to 'char *'
возвращает не char-указатель а void -указатель
Return Value
realloc returns a VOID pointer to the reallocated (and possibly moved) memory block
dres = realloc (dres , size * sizeof(char));
error C2440: '=' : cannot convert from 'void *' to 'char *'
возвращает не char-указатель а void -указатель
Return Value
realloc returns a VOID pointer to the reallocated (and possibly moved) memory block