>>960
(1)(2)(3)の順に読んでね、お兄ちゃん。

for(TASK* i=Top->Next; i!=End; i=i->Next)  ← (2) 次のi->Nextは開放後の不定値になり
{
(中略)
  switch(i->Status)   ← (3) そして、どかーん☆
  {
    case STATUS_KILL:
      TaskDelete(i);    ←(1) ここでiの実体を開放した場合、
      break;
  };
}