В машинном коде Z80 это дешевый метод инициализации буфера фиксированным значением, скажем, всеми пробелами. Таким образом, кусок кода может выглядеть примерно так.
LD HL, DESTINATION ; point to the source
LD DE, DESTINATION + 1 ; point to the destination
LD BC, DESTINATION_SIZE - 1 ; copying this many bytes
LD (HL), 0X20 ; put a seed space in the first position
LDIR ; move 1 to 2, 2 to 3...
В результате кусок памяти в DESTINATION полностью заполнен пустым. Я экспериментировал с memmove и memcpy и не могу воспроизвести это поведение. Я ожидал, что memmove сможет сделать это правильно.
Почему memmove и memcpy ведут себя таким образом?
Есть ли разумный способ выполнить такую инициализацию массива?
Я уже знаю о char array[size] = {0} для инициализации массива
Я уже знаю, что memset будет работать с отдельными символами.
Какие еще существуют подходы к этому вопросу?