請幫助查找此功能中的錯誤。錯誤的內存操作?
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