Если вы можете перейти на C ++ 11, вы должны использовать std::shared_ptr
, и ваша проблема решена. shared_ptr
позаботится о количестве пользователей указателя и автоматически очистит его, когда последний пользователь удалит его. И я настоятельно рекомендую перейти на современный C ++, это решает большое количество проблем.
Вы также можете взглянуть на Boost SmartPtr - он делает то же самое и может использоваться до C ++ 11.
Вы также можете попытаться реализовать такую утилиту самостоятельно, но вы должны убедиться, что реализовали ее правильно - счетчик ссылок увеличивается и уменьшается правильно в духе Правило трех
Если вам нужно использовать необработанные указатели, то в стандартном C ++ нет способа гарантировать, что указатель будет (или не будет) освобожден функцией.
Единственный способ сообщить другим программистам, что ваша функция хочет стать владельцем указателя (и удалит его), - это через документацию , либо в коде (с комментариями), либо с помощью отдельного документа (если вы создать API например).
Однако вы должны тщательно продумать, должна ли функция вступать во владение указателем. Разумно ли для функции владеть ею? Если нет, просто оставьте его и позвольте распределительной функции позаботиться об освобождении.