c++ - 如何释放 C++ 中的结构和对象数组?

标签 c++ arrays memory-leaks struct delete-operator

程序的结构是这样的,有一个头文件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/

相关文章:

c++ - 如何限制进程可用的内存?

android - 如何使用带有 Gradle 的 Android Studio 在 Android 上使用 NDK 从 C++ 构建静态库?

c++ - 如何使用 fastcgi 配置 Lighttpd

ios - 希望使用过滤器方法使用 Swift 从数组中删除基于两个属性的重复模型对象

php - 仅通过检查键来递归删除数组及其子元素的元素

android - FragmentStatePagerAdapter 内存泄漏(带有 viewpager 的嵌套 fragment )

memory - 为什么内存泄漏这么严重?

c++ - g++优化: O2 flag fixes a broken code where O3 breaks it again

c++ - 尽管类型在析构函数中完全限定,但 std::auto_ptr 崩溃和泄漏

arrays - Swift:如何获得两个结构数组之间的差异