FluidStudios MM + memory leak?

Started by
4 comments, last by OmarShehata 12 years, 1 month ago
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!
Advertisement
When you say that you are getting an undefined reference error, is it coming from the compiler or the linker?
Well, it shows up in "Build Messages" in Code::Blocks, so I'm guessing compiler? (How do I know for sure?)
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.
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.
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!

This topic is closed to new replies.

Advertisement