请帮助查找此功能中的错误。错误的内存操作?
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 ***
说明,请在我弄错了?
'str'不包含终止'NULL'字符足够的空间。 – timrau 2013-03-20 00:17:17
@timrau优秀的捕获。 – 2013-03-20 00:18:50