2016-01-19 2 views
-3

я удалить 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, но я проверяю на Locals, что w нормально:

My error

Как устранить эту ошибку?

+1

C не имеет 'оператора delete'. теги это как C++. – fuz

+0

с? C++? ......... – songyuanyao

+0

Вы, наверное, UB в другом месте. Представьте фактический тестовый файл, как вам было поручено сделать в «Как спросить». –

ответ

1

решаемые, ошибка, так как Поттер @ Джонатан указует:

swprintf_s (ш, wcslen (ш), ... вес изначально были неинициализированный буфер, поэтому вызов wcslen на это неверно. Вы хотите передать размер буфера swprintf_s

Смежные вопросы