BCC

void addbullet()
{
  object_type *m;
  m=popnewobject();
  if (!m) return;
  m->tval = TV_BULLET;
  /*などなど*/
}

↑のよーなのを書いたとき、はじめ「m=popnewobject();」の行がまるまる抜けていた。
書かれていなかった。他の敵キャラを配置するなどの関数では書かれていた。
見た目には3回に1回くらい弾が出ないことがあるなーと思った直後気が付いたんだが、フリーズもクラッシュも起こらず普通に弾が発射されるように動いていた。初期化されていないポインタがたまたま有効なオブジェクトのデータを指していたのか。なんもエラーが出ないとは恐ろしい。