配列中の1要素をgetしたりfreeするリソースマネージャの実装
OSを書いていると動的にあるデータを確保および解放したいことが良くある
例えばプロセス構造体はプロセスが生成される度に確保され、プロセス終了後に解放される
この場合、new演算子を用いればいいと思うかもしれないが、OSの中盤でnew,deleteを実装するのはしんどい
しかもデバッグ時にはnewで確保されたそれらのアドレスを見たところ何もわからない
そこで配列を作成し、その配列の要素を管理するリソースマネージャを作ることになる
このマネージャを作るメリットは以下の点にあるだろう
- デバッグしやすい(リンク時にアドレスが固定されるから)
- 配列に対してさまざまな管理を行うことができる(配列の要素個以上の要素の確保をエラーにできるなど)
この機能をもったクラスをテンプレートをつかって作成することで汎用的なクラスをつくる
下記にテストプログラムを載せた とにかくシンプル(’’;)
#include
using namespace std;
template
public:
T room[N];
bool isFree[N];
lessor(){
for(int i=0;i
}
};
int main(void)
{
lessor
for(int i=0;i<11;i++)
cout<