如何在C++中释放结构和对象的数组
How to free an array of structure and objects in C++?
程序的结构是这样的,有一个头文件管理器.h,其中用数据成员和成员函数定义C++类。然后是经理。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;
在经理。C我把它们定义为
pagePool=new Page[n];
framePool=new Frame[n];
在管理器的析构函数中。C
我在做
delete[] pagePool;
delete[] framePool;
*hashtable=NULL;
*lruhashtable=NULL;
*mruhashtable=NULL;
这里的结构是全局的,而不是类本身的一部分。这是我家庭作业的一部分。问题是在我的测试用例中,我正在转发以前的测试用例值。
我做了一个编辑,把指针设置成现在的样子。现在,数组中指向struct的所有指针数组的第一个值为null。
仍然没有释放指向对象的指针数组。有人能对此发表评论吗?
编辑
在循环中迭代时,指针被释放。
但是指向对象的指针数组仍然不是?
当您调用时
free(hashtable);
您为数组释放分配的内存
int value;
int page;
struct Node *
但是为Node所指向的结构分配的内存被注释解除分配。
其主要思想是从"最深的尖"结构到顶部进行处理。所以试着做一个自下而上的分配,按照与分配相反的顺序。
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组