请帮助查找此功能中的错误。
wchar_t* clean(wchar_t out[], const wchar_t in[])
{
int n = wcslen(in);
wchar_t *str = new wchar_t[n];
wcscpy(str, in);
out[0] = L'\0';
wchar_t *state;
wchar_t *word = wcstok(str, L" ", &state);
while (NULL != word) {
if (wcslen(word) > 1) {
wcscat(out, word);
wcscat(out, L" ");
}
word = wcstok(NULL, L" ", &state);
}
delete state;
delete[] str;
return out;
}
此函数从原始字符串中获取单词并将它们放入结果字符串中。除了函数忽略多个空格和单个字母中的单词。
不幸的是,程序落在了这个函数的最后几行,同样的错误(linux-3.7,gcc-4.7):
*** Error in `./a.out': free(): invalid next size (fast): 0x08610338 ***
请解释一下,我弄错了什么?