Как освободить массив структур и объектов в C ++?

Структура программы такова, есть заголовочный файл manager.h, в котором класс C ++ определяется с помощью членов-данных и функций-членов. Затем в файле manager.C реализуются функции-члены.

Я определил 3 структуры в файле .c.

#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.h имеет следующие члены данных.

Page* pagePool;
Frame* framePool;

В manager.C я определяю их как

pagePool=new Page[n];
framePool=new Frame[n];

В деструкторе для менеджера. С

я делаю

delete[] pagePool;
delete[] framePool;
*hashtable=NULL;
*lruhashtable=NULL;
*mruhashtable=NULL;

Структуры здесь глобальны и не являются частью класса как такового. Это часть моей домашней работы. Проблема в моих тестовых примерах. Я продолжаю пересылать значения предыдущих тестовых случаев.

Я сделал правку, чтобы установить указатели такими, какие они есть. Теперь первое значение в массиве для всех массивов указателей на структуру равно нулю.

Тем не менее массив указателей на объекты не освобождается. Кто-то может прокомментировать это?

редактировать

При повторении цикла, указатели освобождаются.

Но все же массив указателей на объекты нет?

0

Решение

когда ты звонишь

бесплатно (Хеш);

Вы освобождаете память, выделенную для массива

int value;
int page;
struct Node *

но память, выделенная для структуры, которая указана Узлом, является свободной.

Основная идея состоит в том, чтобы отойти от самой глубокой заостренной структуры к вершине. Так что попробуйте сделать снизу вверх, в обратном порядке, чтобы он был выделен.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]