タスクシステムの基本的なことを以下のサイトで大体理解し、
本格的なシューティングゲームを実現するタスクシステム
http://codezine.jp/article/detail/297
シューティングを作ってみたのですがどうしても一つだけわからないことがあります。
まずここの解説では、
①まずタスクシステムのためのメモリ領域を確保。
②タスクを生成・追加したら①で確保した領域の一部を使わせる。
③タスクを削除する時はリストから除外するだけで実際にはその分のメモリ解放は行わない。
④それで①のメモリ領域の残量が少なくなって来たら、デフラグ(③の削除したタスクの分を解放する。)
といった流れでメモリを扱うと説明してます。
それでまあ大体仕組みは理解でき、扱えたのですが、
ここの解説の2ページ目のサンプルコードに①のメモリ領域の確保で、
実際どのくらいのバイト数のメモリ領域を確保するか、書いてあったのですが、
#include"TaskSystem.h"
#define MEM_SIZE 10240 // メモリ領域のバイト数 /*←①のメモリ領域バイト数*/
#define DFRG_SIZE 256 // 未使用領域がこのバイト数未満になったら
// デフラグ
static BYTE *g_buf=NULL; // メモリ領域の先頭を指すポインタ
BYTE* Task::m_active=NULL; // 最初に実行するタスクを指すポインタ
BYTE* Task::m_free=NULL; // 新しいタスクを追加する未使用領域の
// 先頭を指すポインタ
static DWORD g_size=0; // 使用中のタスクに割り当てているバイト数
static DWORD g_count=0; // 使用中のタスク数
// タスクリストの初期化
void Task::InitTaskList(void)
{
ReleaseTaskList();
g_buf=(BYTE*)malloc(MEM_SIZE); // メモリ領域の確保 /*←①の確保*/
memset(g_buf,0,MEM_SIZE);
m_active=NULL;
m_free=g_buf;
g_size=0;
g_count=0;
}
なんで10240なんでしょう?
10240の領域を用意して、その一部を追加したタスクに割り当てるのはわかるのですが、
そもそもなんで10240なんでしょう?
そこがどうしてもわかりません。
一つのタスクに使われるバイト数はたぶんこれくらいだから、
10240くらい用意しとけばいいだろうといったような
筆者の経験からくるものなのか?
それともなんらかの決まりからくるものなのか?
それとも筆者が考えなしに適当に決めたものなのか?(←これはさすがにないと思う)
わかりません。
よろしければアドバイスお願いします。