正直日記



2008/03/12

_ boost::poolを使ってみない
boost::poolでもいいんだけど、Listとメモリを取り合って断片化しているよう
だったので、あらかじめ静的配列を用意すればいいんじゃーんってことで、差し
替えてみた。

template<int N, int M>
class SeitekiHairetsuAllocator {
private:
  struct { int memory[1+(N/4)]; } block[M];
  void* empty[M];
  int used;
public:
  SeitekiHairetsuAllocator() {
    used = 0;
    for (int i = 0; i < M; ++i) empty[i] = &block[i];
  }
  void* malloc() { void* p = empty[used]; used++; return p; }
  void free(void* mem) { used--; empty[used] = mem; }
};

namespace {
  SeitekiHairetsuAllocator<TASK_SIZE, 1024> task_pool IN_EWRAM;
}
空き配列の管理にポインタを使っているのが無駄に感じられたり、あと配列を最 後まで使い切ってしまったときの配慮を全くしてなかったり、全然関係ないポイ ンタをfreeされたときどうすんの?とか色々恐ろしいけど、取りあえず動いてい るようなので一人で感動してた。世界が感動で包まれていたよ。
_ タイル消費量を自動で見積もる
自分の目でキャラ化けを確認するしかないと思い込んでいたけど、よく考えたら
スプライト用タイルVRAMの空きが無かったときのための処理は組み込んであるわ
けで、そこに到達した時点でログを出力するようにすれば良かったんだね……。

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12