我有一個很大的問題與std :: wstring內存分配。程序崩潰時,我嘗試使用此代碼:堆內存分配崩潰與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");
錯誤是內存堆分配失敗,結果是程序崩潰。爲什麼?怎麼了?
它的工作原理,但我應該添加\ 0字符緩衝區2 [大小]? – Stefano 2011-04-10 13:47:21
@Stefano:不需要,_TRUNCATE爲您做到這一點 – Erik 2011-04-10 14:39:36