Jump to content

  • Log In with Google      Sign In   
  • Create Account


FluidStudios MM + memory leak?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 OmarShehata   Members   -  Reputation: 205

Like
0Likes
Like

Posted 25 February 2012 - 09:53 PM

Okay, so I'm working on a game, and I've just gotten to the point where I've successfully implemented openGL, SDL and box2d. Cool, cool. Now doing some tests with anti-aliasing, I suddenly realize I got a memory leak.

Here's my main game loop: EDIT: after further testing, I discovered the leak is coming from how I'm drawing the shape using openGL. So here's the code for drawing the box:

EDIT2: Okay, after some more testing, turns out all I needed was to add these two lines after glEnd();

glDisable(GL_TEXTURE_2D);
			glDeleteTextures( 1, &texture );

THE PROBLEM NOW

Now I've tried implementing FluidStudios memory manager which looks pretty awesome, but I can't seem to get it to work.

I can access a few variables from the class because it's actually defined as a type in the header file, but then there are these functions that are just floating independently in the header file that I'm not sure how to access.

I tried:

#include "mmgr.h"

extern void	m_dumpMemoryReport(const char *, const bool); //Adding this alone without the below lines doesn't give an error

//now trying to access it using only *ONE* of the two bellow

m_dumpMemoryReport("mem.txt",true); //undefined reference error
m_dumpMemoryReport(); //undefined reference error

Any help on either of these (the memory leak or getting that memory manager to work) would be appreciated! Thanks!

Sponsor:

#2 RulerOfNothing   Members   -  Reputation: 1160

Like
1Likes
Like

Posted 25 February 2012 - 11:50 PM

When you say that you are getting an undefined reference error, is it coming from the compiler or the linker?

#3 OmarShehata   Members   -  Reputation: 205

Like
0Likes
Like

Posted 26 February 2012 - 05:47 AM

Well, it shows up in "Build Messages" in Code::Blocks, so I'm guessing compiler? (How do I know for sure?)

#4 RulerOfNothing   Members   -  Reputation: 1160

Like
0Likes
Like

Posted 26 February 2012 - 06:23 AM

Well, what does the error message actually say (full text and all)? Also, linker errors are usually preceded by LNKxxxx where xxxx is a number.

#5 e‍dd   Members   -  Reputation: 2105

Like
1Likes
Like

Posted 26 February 2012 - 08:37 AM

The 'extern void m_dumpMemoryReport(const char *, const bool);' line merely tells the compiler about the existence and signature of a function. The actual compiled code for the function will need to be provided at link time so the linker can connect the dots to form a complete program.

So which library contains the 'm_dumpMemoryReport' function? You need to make sure that is linked in to your project in the same way you have done for OpenGL, SDL, and Box2D. Presumably there's some project/properties dialog in Code::Blocks where additional libraries can be specified(?).

Now's probably a good time to try to read up on the 'separate compilation model' of C and C++. Once you have that understanding, fixing problems like this become very easy.

#6 OmarShehata   Members   -  Reputation: 205

Like
0Likes
Like

Posted 27 February 2012 - 12:30 AM

The 'extern void m_dumpMemoryReport(const char *, const bool);' line merely tells the compiler about the existence and signature of a function. The actual compiled code for the function will need to be provided at link time so the linker can connect the dots to form a complete program.


Ah, how could I have forgotten that. I included the header file, with the names of the functions, but not the actual cpp file which had the bodies of the functions.

Seems to work now, cheers!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS