【发布时间】:2021-05-19 05:59:42
【问题描述】:
我想编写一个函数,它将 error_code 作为参数并获取错误消息并返回消息。但是对于 FormatMessage,分配的内存是通过使用 LocalFree(err_msg) 清除的。不知道怎么能不回来。
static char* return_message(int error_code) {
LPTSTR err_msg;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK,
0, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&err_msg, 0, 0);
return err_msg;
我想要一个类似于上面的方法。虽然在上述情况下,如果我们返回 err_msg 它超出了范围。任何人都可以为此提供适当的功能吗?
【问题讨论】:
-
本地复制后返回
std::unique_ptr<char[], CustomDeleter>,还是std::string?
标签: c++ pointers scope formatmessage