簡體   English   中英

如何在C ++中釋放結構和對象的數組?

[英]How to free an array of structure and objects in C++?

程序的結構就是這樣,有一個頭文件管理器.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];

類的數據成員如下:類名:Page

類名稱:框架

類名:經理

所有結構都在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。

仍然沒有釋放指向對象的指針數組。 有人可以對此發表評論嗎?

編輯

在遍歷循環時,將釋放指針。

但是仍然不是指向對象的指針數組嗎?

你打電話時

免費(哈希表);

您釋放分配給數組的內存

int value;
int page;   
struct Node *

但是為Node指向的結構分配的內存已取消分配。

主要思想是從“最深的尖頭”結構到頂部。 因此,嘗試以自下而上的方式進行自下而上的脫位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM