Sign in to follow this  
OmarShehata

FluidStudios MM + memory leak?

Recommended Posts

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: [b]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:[/b]

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

[CODE]
glDisable(GL_TEXTURE_2D);
glDeleteTextures( 1, &texture );
[/CODE]

[b]THE PROBLEM NOW[/b]

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:

[CODE]
#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
[/CODE]

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
[quote name='edd²' timestamp='1330267070' post='4916718'] The 'extern void m_dumpMemoryReport(const char *, const bool);' line merely tells the compiler about the existence and signature of a function. [b]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.[/b][/quote]

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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this