«Почему» заключается в том, что вы отвечаете за управление временем жизни объектов, которые вы создаете с помощью new
.
В языке говорится, что объекты с автоматическим продолжением хранения (например, find
в вашем примере)жить так долго, как блок, в котором они созданы.Они автоматически удаляются (вы не должны делать это самостоятельно) в соответствующее время (то есть, как правило, когда вы покидаете этот блок).
Объекты динамической длительности хранения (например, на которые указывает pfind
) сохраняются до тех пор, пока вы их не удалите.,Ничто не удалит их для вас.
Так что да, вам нужно удалить его самостоятельно в этом случае, с помощью delete pfind;
.
(или используйте соответствующий тип интеллектуального указателя для вашего варианта использования.)