プログラムの構造はそれ自体であり、C++クラスがデータメンバーとメンバー関数で定義されているヘッダーファイルmanager.hがあります。次に、manager.Cファイルにメンバー関数が実装されます。
.cファイルで3つの構造体を定義しました。
#define HTSIZE 7
struct Node
{
int value;
int page;
struct Node *next;
};
struct Node *hashtable[HTSIZE];
struct lruNode{
int value;
struct lruNode *next;
struct lruNode* head;
struct lruNode* tail;
};
struct lruNode* lruhashtable[HTSIZE];
struct lruNode* lruTrackHead;
struct lruNode* lruTrackTail;
struct mruNode{
int value;
struct mruNode *next;
};
struct mruNode* mruTrackHead=NULL;
struct mruNode* mruhashtable[HTSIZE];
クラスのデータメンバーは次のとおりです。クラス名:ページ
クラス名:フレーム
クラス名:マネージャー
すべての構造体はmanager.Cで宣言されています
manager.hには次のデータメンバーがあります。
Page* pagePool;
Frame* framePool;
manager.Cでは私はそれらを次のように定義しています
pagePool=new Page[n];
framePool=new Frame[n];
manager.Cのデストラクタで
私がやっている
delete[] pagePool;
delete[] framePool;
*hashtable=NULL;
*lruhashtable=NULL;
*mruhashtable=NULL;
ここでの構造体はグローバルであり、クラス自体の一部ではありません。これは私の宿題の一部です。問題は、以前のテストケース値を繰り越している私のテストケースにあります。
ポインタをそのままに設定するために編集を行いました。これで、structへのポインターのすべての配列の配列の最初の値はnullになります。
それでも、オブジェクトへのポインタの配列は解放されません。誰かがそれについてコメントできますか?
編集
ループを反復処理すると、ポインターが解放されます。
しかし、それでもオブジェクトへのポインタの配列はそうではありませんか?