我在使用它之后删除了一个wchar_t数组,但是失败了:
const wchar_t t1[] = L"A string";
const wchar_t* t2 = L"Other string";
wchar_t* w = new wchar_t[wcslen(t1) + wcslen(t2) + 1];
int len = swprintf_s(w, wcslen(w), L"%s%s", t1, t2);
w[len] = 0;
delete[] w;
我在delete[] w;
失败,错误为write to the end of heap buffer
,但我在本地检查w
是否正常:
如何解决此错误?
答案 0 :(得分:1)
解决了,错误是,正如@Jonathan Potter指出的那样:
swprintf_s(w,wcslen(w),... w最初是一个未初始化的缓冲区,所以在它上面调用wcslen是不正确的。你想将缓冲区的大小传递给swprintf_s