Вы не можете предсказать поведение этой функции, так как это неопределенное поведение
Из ссылки:
Распределение пространства, ранее выделенного на malloc()
, calloc()
,aligned_alloc
, (начиная с C11) или realloc()
.
Если ptr
- нулевой указатель, функция ничего не делает.
Поведение не определено, если значениеptr
не равно значению, возвращенному ранее malloc()
, calloc()
, realloc()
или aligned_alloc()
(начиная с C11).
- free
, C ++ Reference
Подчеркните: использование вами free
в этом контексте будет означать освобождение указателя, который не был получен при использовании какой-либо из этих функций;он был получен путем преобразования указателя, полученного из malloc
, и, таким образом, недействителен.
Мое лучшее предположение о том, что может произойти, является ошибкой сегментации;но это зависит от вашего компилятора, а не от того, что вы или я можем гарантировать.
Так что не делайте этого.