Другой способ сделать это (немного проще, но только для некоторых случаев):

я есть следующая функция

__declspec(dllexport) wchar_t* __stdcall __getJson(wchar_t * listN){
setlocale(LC_ALL, "");
//function logic
wstring ant = utf8_to_wstring(result);
const WCHAR* constRes = ant.c_str();
WCHAR* tempObj=new WCHAR[ant.length()];
wcscpy(tempObj, constRes);
thread Thread([tempObj]{
    Sleep(1000);
    delete[] tempObj;
});
Thread.detach();
return tempObj;
}

Эта DLL возвращаетсяwchar_t* в MetaTrader4.

Я пробовал много способов вернуть правильное значение и избежать утечек памяти, таких как заданный тип возвратаconst wchar_t*, создавая свой собственный класс с деструктором сdelete[] в. Но все эти попытки оказались безуспешными: я получил'??ello' вместо'hello', Просто первые один или два символа были неверны. С созданиемthread это работает правильно. Но я хочу знать, может ли быть лучшее решение?

Ответы на вопрос(4)

Ваш ответ на вопрос