В следующей функции (измененной из другого поста Stackoverflow) я пытаюсь использовать unique_ptr
, чтобы память, выделенная new
, освобождалась позже.
Безопасно ли делать std::wstring(res.get())
здесь? То есть res
будет скопировано при вызове строкового конструктора, так что если память, выделенная new
, будет освобождена, возвращаемое значение не станет мусором?
std::wstring narrow_to_wide_str(const std::string& input) {
size_t size = input.size() + 1;
size_t out_size;
std::unique_ptr<wchar_t[]> res{ new wchar_t[size] };
mbstowcs_s(&out_size, res.get(), size, input.c_str(), size - 1);
return std::wstring(res.get());
}