0

程序的结构是这样的,有一个头文件 manager.h,其中 C++ 类定义了数据成员和成员函数。然后在 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。

仍然没有释放指向对象的指针数组。有人可以对此发表评论吗?

编辑

在遍历循环时,指针被释放。

但是指向对象的指针数组仍然不是吗?

4

1 回答 1

1

你打电话时

免费(哈希表);

你释放分配给数组的内存

int value;
int page;   
struct Node *

但是为 Node 指向的结构分配的内存被取消分配。

主要思想是从“最深的尖端”结构到顶部解除分配。所以试着做一个自下而上的解除分配,与它被分配的顺序相反。

于 2012-10-15T09:10:06.200 回答