Cześć, piszę plugin do aplikacji z wystawionym C-like API, które zwraca wynik przez parametr. Przy ostatnim refaktorze kodu zauważyłem, że w jednym miejscu leakuje resource, żeby zapobiec takim sytuacją w przyszłości, chciałbym użyć np. std::unique_ptr
do zarządzania czasem życia zwracanych zasobów. Bazując na https://dev.krzaq.cc/post/you-dont-need-a-stateful-deleter-in-your-unique_ptr-usually spłodziłem takie cuś:
using anyID = uint64_t;
using unique_ptr_c = std::unique_ptr<anyID[], function_caller<decltype(free_log), &free_log>>;
anyID* apiResult;
c_api(&apiResult);
unique_ptr_c rai{apiResult};
std::cout << rai[0] << " " << rai[1];
Nie jestem pewny czy to rozwiązanie jest optymalne (czy chociażby prawidłowe) i tu pytanie do Was: jak mógłbym je usprawić/naprawić/zmienić?
PS działający kod: https://wandbox.org/permlink/6Ln63bOLyMR2F1Sh