S
sandy
I am a student with an assignement due tomorrow. I am to write a sort
of a memory manager, I don't want to go into all of the details (it's
long).
I have the following header file for my memory manager:
<code>
#ifndef MemManager_h
#define MemManager_h
#include <cstdlib>
class MemManager
{
public:
// Constructor
//
// Input : None
// Purpose: To create an empty MemManager
// Output : None
MemManager ( );
// Copy constructor
//
// Input : MemManager M
// Purpose: To initialize MemManager to M
// Output : None
MemManager ( const MemManager & M );
// Copy assignment
//
// Input : MemManager M
// Purpose: To assign Rhs to current MemManager
// Output : Current MemManager
const MemManager & operator= ( const MemManager & M );
// Destructor
//
// Input : None
// Purpose: To free memory of MemManager
// Output : None
~MemManager ( );
// Clear
//
// Input : None
// Purpose: To re-initialize MemManager to empty
// Output : None
void Clear ( );
//
// Input : None
// Purpose: To delete the top element of MemManager
// Output : 1 if successful; 0 otherwise
// Notes: Only used to clear the linked list for this class
int Pop ( );
// Empty
//
// Input : None
// Purpose: To check if MemManager is empty
// Output : 1 if empty; 0 otherwise
int Empty ( ) const;
/*****************************************************
Allocate
Inputs: int Pages
Output: int Starting Page
Notes: Takes in the number of pages needed by a job
Outputs the starting page for the job in memory
returns -1 if there is not enough memory for the
job.
*********************************************************/
int Allocate(int N);
/*************************************************************
GetNumPages
Inputs: None
Outputs: Pages
Notes: Returns the number of pages in the current
MemNode's block
type.
*************************************************************/
int GetNumPages(MemNode & MN);
/**************************************************************
GetFirstPage
Inputs: None
Outputs: Page
Notes: Returns the first available memory page from the
current
MemNode's blockType.
********************************************************************/
//int GetFirstPage(MemNode & MN) const;
private:
typedef struct BlockType
{
int firstPage;
int numberPages;
//Constructor
BlockType() : firstPage(0), numberPages(59)
{}
//I am not sure that I should ALLOW this since we are
to be
// limited to 60 pages... I left it in...
BlockType(int f, int n) : firstPage(f), numberPages(n)
{}
}BlockType;
struct MemNode
{
BlockType Element;
MemNode *Next, *Previous;
// StackNode constructors
MemNode ( ) : Next ( NULL )
{}
MemNode ( const BlockType & E, MemNode *P = NULL ) :
Element ( E ), Next ( P )
{ }
};
// Pointer to the top of Stack
MemNode *Top;
int NumNodes;
};
#endif
</code>
In the private section I have a typedef (I know this C not C++ but I
cannot compile if I don't use the type def...)
I have a typedef of 'BlockType'. I am supposed to keep this Private
(requirement of the assignment) and I need to access the properties of
the BlockType: firstPage and numberPages (meaning the first available
page of memory and the number of pages available respectively.
I declare the following function:
int GetNumPages(MemNode & MN);
I get the non-sensical error of: expected `;' before '(' token
If I comment out the line the error goes away and it will compile. This
tells me there are no semi-colons missing on the lines above. The error
does not however point to any error that I can see to fix.
I am down to the crunch and I am stumped.
It would work fine (I think) if I moved the code into a seperate class
but the prof has specified that he does not want us to do that.
I however cannot figure out how to get access to those values. (Ant the
error does not help since the compiler is obviously confused.)
PLEASE HELP.
Thanks.
of a memory manager, I don't want to go into all of the details (it's
long).
I have the following header file for my memory manager:
<code>
#ifndef MemManager_h
#define MemManager_h
#include <cstdlib>
class MemManager
{
public:
// Constructor
//
// Input : None
// Purpose: To create an empty MemManager
// Output : None
MemManager ( );
// Copy constructor
//
// Input : MemManager M
// Purpose: To initialize MemManager to M
// Output : None
MemManager ( const MemManager & M );
// Copy assignment
//
// Input : MemManager M
// Purpose: To assign Rhs to current MemManager
// Output : Current MemManager
const MemManager & operator= ( const MemManager & M );
// Destructor
//
// Input : None
// Purpose: To free memory of MemManager
// Output : None
~MemManager ( );
// Clear
//
// Input : None
// Purpose: To re-initialize MemManager to empty
// Output : None
void Clear ( );
//
// Input : None
// Purpose: To delete the top element of MemManager
// Output : 1 if successful; 0 otherwise
// Notes: Only used to clear the linked list for this class
int Pop ( );
// Empty
//
// Input : None
// Purpose: To check if MemManager is empty
// Output : 1 if empty; 0 otherwise
int Empty ( ) const;
/*****************************************************
Allocate
Inputs: int Pages
Output: int Starting Page
Notes: Takes in the number of pages needed by a job
Outputs the starting page for the job in memory
returns -1 if there is not enough memory for the
job.
*********************************************************/
int Allocate(int N);
/*************************************************************
GetNumPages
Inputs: None
Outputs: Pages
Notes: Returns the number of pages in the current
MemNode's block
type.
*************************************************************/
int GetNumPages(MemNode & MN);
/**************************************************************
GetFirstPage
Inputs: None
Outputs: Page
Notes: Returns the first available memory page from the
current
MemNode's blockType.
********************************************************************/
//int GetFirstPage(MemNode & MN) const;
private:
typedef struct BlockType
{
int firstPage;
int numberPages;
//Constructor
BlockType() : firstPage(0), numberPages(59)
{}
//I am not sure that I should ALLOW this since we are
to be
// limited to 60 pages... I left it in...
BlockType(int f, int n) : firstPage(f), numberPages(n)
{}
}BlockType;
struct MemNode
{
BlockType Element;
MemNode *Next, *Previous;
// StackNode constructors
MemNode ( ) : Next ( NULL )
{}
MemNode ( const BlockType & E, MemNode *P = NULL ) :
Element ( E ), Next ( P )
{ }
};
// Pointer to the top of Stack
MemNode *Top;
int NumNodes;
};
#endif
</code>
In the private section I have a typedef (I know this C not C++ but I
cannot compile if I don't use the type def...)
I have a typedef of 'BlockType'. I am supposed to keep this Private
(requirement of the assignment) and I need to access the properties of
the BlockType: firstPage and numberPages (meaning the first available
page of memory and the number of pages available respectively.
I declare the following function:
int GetNumPages(MemNode & MN);
I get the non-sensical error of: expected `;' before '(' token
If I comment out the line the error goes away and it will compile. This
tells me there are no semi-colons missing on the lines above. The error
does not however point to any error that I can see to fix.
I am down to the crunch and I am stumped.
It would work fine (I think) if I moved the code into a seperate class
but the prof has specified that he does not want us to do that.
I however cannot figure out how to get access to those values. (Ant the
error does not help since the compiler is obviously confused.)
PLEASE HELP.
Thanks.