addrinfo , new delete, unique_ptr .
addrinfo addrinfo getaddrinfo(), freeaddrinfo() . unique_ptr , freeaddrinfo() Deleter, :
class SomeOtherClass
{
public:
SomeOtherClass() : hints(new addrinfo), result(nullptr, &freeaddrinfo) { }
private:
std::unique_ptr<addrinfo> hints;
std::unique_ptr<addrinfo, void(__stdcall*)(addrinfo*)> result;
};
:
getaddrinfo(..., &result);
, std::unique_ptr &:
addrinfo *temp;
getaddrinfo(..., &temp);
result.reset(temp);
: - decltype Deleter:
std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> result;