string转换为LPCWSTR内存怎么释放?

LPCWSTR _string2LPCWSTR(std::string orig)
{
    //声明指针
    wchar_t *wcstring = 0;
    //开始
    try
    {
        //长度
        size_t origsize = orig.length() + 1;
        //分配长度
        //const size_t newsize = 100;
        //开始位置
        size_t convertedChars = 0;
        //判断
        if (orig == "")
        {
            //为空
            wcstring = (wchar_t *)malloc(0);
            //写入
            mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
        }
        else
        {
            //分配内存
            wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length() - 1));
            //写入
            mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
        }
    }
    //捕获异常
    catch (std::exception e)
    {
    }
    //返回
    return wcstring;
}

你应当参照函数 mbstowcs 的形式,以参数的方式获取返回值,而不是由函数结果的方式返回值,否则是无法解决局部变量的内存需释放而外部变量仍需要的该内存内容的问题。