dynamic memory deletion

Started by
1 comment, last by TykeiL 20 years, 3 months ago
my question today is about dynamic memory allocation, i have been reading this book which describes a little about it but since im using pointers to pointers to pionters and need to delete the memory i dont know whats going on with it. heres my code,

char Buffer[MAX_PATH]
float ***geometry;
float ***Ngeometry;
float ***Cgeometry;
float ***Tgeometry;
int numfaces;

void LoadModel()
{	

	fstream scenefile;
	scenefile.open(Scene,ios::in | ios::out);

	scenefile >> Buffer;
	numfaces = atoi(Buffer);
	geometry = new GLfloat**[numfaces];
	Ngeometry = new GLfloat**[numfaces];
	Cgeometry = new GLfloat**[numfaces];
	Tgeometry = new GLfloat**[numfaces];
	
	for(int x = 0; x < numfaces; x++)
	{
		geometry[x] = new GLfloat*[3];
		Cgeometry[x] = new GLfloat*[3];		
		Ngeometry[x] = new GLfloat*[3];
		Tgeometry[x] = new GLfloat*[3];
		
		for(int y = 0; y < 3; y++)
		{
			geometry[x][y] = new GLfloat[3];
			Ngeometry[x][y] = new GLfloat[3];			
			Cgeometry[x][y] = new GLfloat[3];
			Tgeometry[x][y] = new GLfloat[3];			

			scenefile >> Buffer;
			geometry[x][y][0] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			geometry[x][y][1] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			geometry[x][y][2] = (GLfloat)atof(Buffer);

			scenefile >> Buffer;
			Ngeometry[x][y][0] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			Ngeometry[x][y][1] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			Ngeometry[x][y][2] = (GLfloat)atof(Buffer);

			scenefile >> Buffer;
			Cgeometry[x][y][0] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			Cgeometry[x][y][1] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			Cgeometry[x][y][2] = (GLfloat)atof(Buffer);
			
			scenefile >> Buffer;
			Tgeometry[x][y][0] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			Tgeometry[x][y][1] = (GLfloat)atof(Buffer);
			scenefile >> Buffer;
			Tgeometry[x][y][2] = (GLfloat)atof(Buffer);
		}
	}
}

void UnLoadModel()
{
// this is where i need my deletion code but i have no clue

// ive tried stuff like

//delete [] **geometry; in nested for statements to delete each

//tier of memory allocation but i get errors

}
thanks if anyone can help me with this, the book i have doesnt go into much detail about deleting memory from pointers to pointers !!My bRaiN is FiLLEd With HappY Juice!!
!!My bRaiN is FiLLEd With HappY Juice!!
Advertisement
I guess you can do something like this for every object
void UnLoadModel(){	int i, j;	for( i = 0;i < numfaces; i++ )	{		for( j = 0;j < 3;j++ )		{			delete [] geometry[i][j];		}		delete [] geometry[i];	}	delete [] geometry;	geometry=NULL;}


I would just stay away of doing it this way, maybe is just me but is a lot easier to have everything in an array of structures. It's a lot more readable as well...


[edited by - JohnyB on January 15, 2004 5:45:27 AM]
thanks heaps,

!!My bRaiN is FiLLEd With HappY Juice!!
!!My bRaiN is FiLLEd With HappY Juice!!

This topic is closed to new replies.

Advertisement