Доброго времени суток!
Возникла необходимость в написании сабжа. Есть вопрос, касающийся поведения функции realloc()
Если указатель равен нулю - понятно, переход на malloc(size)
Если размер равен нулю - никто меня тапками не закидает, если это будет переход на free(ptr)
А как быть, если ptr ссылается на невалидную память? Что при этом возвращать? Валидность указателя определяется исходя из целостности всей кучи, и неправильный указатель может указывать не только за пределы динамической памяти, но и не на начало блока, либо на начало уже освобожденного блока. С free() - нет проблем, можно ничего не освобождать.
Короче, что надо вернуть: NULL или значение, переданное в параметрах, или правильный адрес блока ?
Спасибо за потраченное на меня время.
|