Как правило, эту проблему можно решить с помощью понятия «владение» указателем соответственно.соответствующая область памяти.
По сути, функция должна определить, вступает ли она во владение областью (в этом случае вы передаете ее этой функции и не должны заботиться об этом, но OTOH вам обязательнодолжен распределять его так, чтобы функция работала нормально, или если он просто «заимствует» указатель.В этом случае он остается вашим, и функция только временно использует его.
Третий вариант - смешанный случай: функция занимает владение, но требует, чтобы память оставалась выделенной (то есть используемой) до тех пор, покапроисходит определенное действие (например, освобождение данного ресурса).В этом случае вы сами выбираете, где выбрать память (куча, стек, статическая память и т. Д.), Но вы несете ответственность за то, чтобы ее можно было использовать достаточно долго.
Что должна делать функция, должно быть задокументированогде-то.