Внезапный вопрос.
void myFunc(wchar_t* buffer)
{
for (int i = 0; i < 6; ++i)
{
buffer[i] = i + 1;
}
}
void myFunc2(wchar_t* buffer)
{
wchar_t t[5];
t[0] = '\x1';
t[1] = '\x2';
t[2] = '\x3';
t[3] = '\x4';
t[4] = '\0';
memcpy(&buffer, &t, 10);
}
Вызываю так:
wchar_t buf[16];
myFunc(buf);
wchar_t buf2[16];
myFunc2(buf2);
Первый вариант (myFunc
) работает. А в myFunc2
, после выполнения memcpy
начинает писать Ошибка при чтении символов строки
.
Это почему так? Вне функции работает.
На скриншоте у меня массив из четырёх элементов, а в коде из пяти - это потому что скриншот я сделал до того, как добавил в массив завершающий ноль. Результат это не изменило.