这是我的代码:
string str = "Hello!";
TCHAR* tch = new TCHAR[str.length() + 1];
mbstowcs_s(NULL, tch, _tcslen(tch), str.c_str(), str.length());
// Use tch for other stuff...
delete [] tch; // Gives debug heap corruption assertion
由于某种原因,我在此代码中得到了堆损坏断言。我竭尽全力试图找出可能出问题的地方。对于字符串和tchar之间的异同,我找不到任何好的文档,这可以帮助我自己解决这个问题。
最佳答案
_tcslen(tch)
给出了错误的结果,因为此时tch
尚未初始化。我假设您应该在此处传递str.length() + 1
(缓冲区的大小)。