FluidStudios MM + memory leak?

This topic is 2428 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

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: 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!

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

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

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

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 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.

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!

1. 1
Rutin
33
2. 2
3. 3
4. 4
5. 5

• 11
• 10
• 13
• 96
• 11
• Forum Statistics

• Total Topics
632974
• Total Posts
3009641
• Who's Online (See full list)

There are no registered users currently online

×