Друзья
В нашем C ++ Iam использует метод realloc для изменения размера памяти, выделяемой malloc.
Использование realloc () выполняется так, как показано ниже
my_Struct *strPtr =(my_struct*)malloc(sizeof(my_Struct));
/* an later */
strPtr = (my_struct*)realloc(strPtr,sizeof(my_Struct)*NBR);
сейчас Википедия (_ http://en.wikipedia.org/wiki/Malloc)says, что
Если вместо этого один
void *p = malloc(orig_size);
/* and later... */
p = realloc(p, big_size);
тогда, если невозможно получить байты памяти big_size, p будет иметь значение NULL, и у нас больше не будет указателя на память, ранее выделенную для p, что приведет к утечке памяти
И это также говорит о том, что правильный способ исправить вышеуказанную ошибку -
void *p = malloc(orig_size);
/* and later... */
void *tmp = realloc(p, big_size);
if (tmp != NULL)
{
p = tmp; /* OK, assign new, larger storage to p */
}
else
{
/* handle the problem somehow */
}
Можете ли вы сказать мне, какой лучший способ использовать realloc ()
также, если у меня есть указатель на структуру, а затем при использовании realloc позже я могу использовать указатель на пустоту ???
Большое спасибо