C++ потоки. Потеря данных

Есть dll с одной вызываемой функцией F()
В ней происходит, с помощью curl, POST-запрос(без обработки ответа) на некий ресурс
Проблема в следующем:
Я в приложении(игре) вызываю функцию из этого dll передав в неё некие данные.
Но во время запроса процесс повисает в ожидании ответа, что, вроде как логично.
Я попытался обернуть curl в поток, но теперь, данные передаваемые curl теряются, либо приходит мусор.

Есть подозрение, что функция F при завершении как-то убивает все данные, которые в неё были переданы; соответственно, в потоке(т.к. ссылка у данных на одну область(как я предполагаю)), они теряются. Это моё предположение.

Подскажите в чём реально может быть проблема и как её можно решить?

P.S. На сайте curl нашел инфу CURLOPT_COPYPOSTFIELDS, думал может это поможет, но нет

void curl_POST(const char* url, const char* data, char* output, int outputSize){

    CURL* curl = nullptr;
    CURLcode res;
    curl = curl_easy_init();
    if (curl) {

        const char* local_buffer = data;
        std::string prt = std::regex_replace(url, std::regex("\""), "\0");

        curl_easy_setopt(curl, CURLOPT_URL, prt);

        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(data));
        curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);

        res = curl_easy_perform(curl);

        if (res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));

        }
        curl_easy_cleanup(curl);
    }
}

int __stdcall F(char* output, int outputSize, const char* req, const char** args, int argsCnt)
{
    std::thread ([](char* output, int outputSize, const char* req, const char** args, int argsCnt)
        {
            curl_POST(args[0], args[1], output, outputSize);
        },  output,  outputSize, req,  args,  argsCnt).detach();
}

Ответы (0 шт):