Зачем нужен 0xDEADBEEF?

1,00
р.
Я разбираюсь в программе и вижу объявление
unsigned long transfer[TRANSFER_LENGTH] = { 0xDEADBEEF }
а ниже по коду
for (int i = 0 i < TRANSFER_LENGTH i++) transfer[i] = GetData()
Вот зачем присваивать transfer 0xDEADBEEF, а не взять просто 0?


Ответ
Потому что DEADBEEF прекрасно видно в hex-dump'е как осмысленная константа 0xDEADBEEF. Вот представьте себе, что Вы анализируете лог обмена и видите там 00000000. Неясно - была передача данных или нет. И что нули означают. А когда получается DEADBEEF понятно, что что-то произошло нехорошее и в каком конкретно месте нужно искать причину. Еще раз поясню, что при нормальном исполнении программы вероятностью увидеть DEADBEEF (или любую другую аналогичную) константу равна 0. А нолей в памяти бывает сколько угодно. Вот на этом игра и ведется.
PS: еще обращу внимание на два момента:
DEADBEEF по-английски означает 'дохлое мясо' :-) константа DEADBEEF одинаково записывается как строчка и как байты в hex-представлении