Поскольку это возможно.
call_func()
создает новый объект test_t
в доступной памяти и помещает его в std::shared_ptr
. Объект test_t
уничтожается, когда std::shared_ptr
выходит из области видимости при выходе из call_func()
.
Таким образом, когда выходит первый вызов call_func()
, используемая им память освобождается идоступен для повторного использования при втором вызове call_func()
.
Это нормальное поведение, не о чем беспокоиться.