Самый простой способ - использовать ATL:
#include <Windows.h>
#include <atlbase.h>
#include <iostream>
int main(int argc, char *argv[]) {
USES_CONVERSION;
LPCSTR a = "hello";
LPCWSTR w = A2W(a);
std::wcout << w << std::endl;
return 0;
}
Любая память, выделенная A2W (от ANSI до Wide), будет освобождена при выходе из функции.