这是我的代码:

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(缓冲区的大小)。

10-06 02:00