std::wstringのメモリ割り当てに大きな問題があります。このコードを使おうとすると、プログラムがクラッシュします。
size_t size;
mbstowcs_s(&size, NULL, 0, buffer, _TRUNCATE);
wchar_t *buffer2 = (wchar_t*)malloc(size + 1);
mbstowcs_s(&size, buffer, buffer_size, buffer, _TRUNCATE);
buffer2[size] = '\0';
std::wstring data(buffer);
クラッシュは最後の行にあり、次の行を使用しても発生しません。
std::wstring data(L"hello");
エラーはメモリヒープ割り当ての失敗であり、結果はプログラムのクラッシュです。なんで?どうしたの?