程序的结构是这样的,有一个头文件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;
这里的结构是全局的,而不是类本身的一部分。这是我作业的一部分。问题出在我的测试用例中,我正在转发以前的测试用例值。
我进行了编辑以按原样设置指针。现在,所有指向结构的指针数组的数组中的第一个值为空。
仍然没有释放指向对象的指针数组。有人可以对此发表评论吗?
编辑
在循环中迭代时,指针被释放。
但是对象指针数组还是不行吗?
最佳答案
当你打电话时
免费(哈希表);
你释放分配给一个数组的内存
int value;
int page;
struct Node *
但是为 Node 指向的结构分配的内存是注意释放的。
主要思想是从“最深点”结构释放到顶部。因此,尝试以与分配顺序相反的顺序进行自下而上的解除分配。
关于c++ - 如何释放 C++ 中的结构和对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892281/