I wanted to write a function that will take error_code as argument and fetch the error message and the return the message. But for FormatMessage the memory allocated is cleared by using LocalFree(err_msg). Not sure how can this be dont along with returning.
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;
I want to have a method similar to above. While in above case if we return err_msg it goes out of scope. Can anyone please give the proper function for this?
Seeing as you're using C++ you can copy the resulting message into an
std::string
instance, free the C-string and return the copy.std::string
's destructor will take care of deallocation when its no longer used.