• 0

C++ Visual Studio 2010 Memory Leak Tracking


Question

I am writing a game in C++ using SDL as the main library, and everything seems to be going okay. However I am noticing large memory usage when I load in a texture, and freeing up pointers/objects with delete() doesn't seem to be actually freeing up memory. So on linux I used ValGrind but I find it difficult to understand where my problems are happening.

I copied my code over and have it compiling and running under Windows using Visual Studio 2010 Pro. I notice the memory usage is the same on both windows and linux, and the memory use doesn't rise constantly but it does rise when objects are created (normal), however before creation is should be deleting the one previously taking that memory space (not freeing), and using some couts I can see that it is freeing them.

ie)

MyObject *obj = new MyObject() // results in + 200kb used

delete(obj) // Doesn't reduce memory by 200kb

obj = NULL // Just sets the pointer to null

If I kept running that my memory would constantly grow by 200kb (which I think is far more than that object should be using anyways). So to try and figure out what was going on I tried adding in the leak code as stated by MS on MSDN.

http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=vs.80).aspx

I put that in my main.cpp file and put the "_CrtDumpMemoryLeaks();" in my main function which looks like


int main(int argc,char[] argv)
{
_putenv("SDL_CENTER_WINDOW");
AttikClient::StartGame();
_CrtDumpMemoryLeaks();
return 0;
}
[/CODE]

AttikClient::StartGame() initializes a static function in a static class, that has the main game loop and other logic. However when I close my program there is no leak output in the output window. I have debug on as I can step through the code and can see basic output but no leak information.

I have also tried VLD (Visual Leak Detector) http://www.codeproject.com/Articles/9815/Visual-Leak-Detector-Enhanced-Memory-Leak-Detectio

And got the same results. The build mode is for sure set as debug, and I make sure to do F5 which is Debug Application. Am I missing something?

8 answers to this question

Recommended Posts

  • 0

I'm no programmer, but a quick search on google returned this: http://stackoverflow.com/questions/2153776/how-to-use-crtdumpmemoryleaks

It says you need to tell the software where to display messages. And since you're software already says "return 0;" I'm guessing you won't even get the "1" value for leaks, and "0" for no leaks.

  • 0

I found the problem kindof.

I needed to set the Runtime Environment to be /MDd instead of /MD which will enable _DEBUG. Now I can see some memory leaks, however I copied the code from MS and I still don't see a file name for where the leak occured. I defined everything that it says to.

Also, now when I try the VLD I just get an Application Failed To Start crash.

Okay. This thread can be closed, I found the issue with VLD (was missing 2 files). All seems to be working :D

  • 0

There's your memory leak :laugh:

Was originally going to do it in XNA/C# however I wanted to make it cross platform without having to do major re-writes. At this point the only changes to go from linux to windows is a third part pthread class, and a couple different libs for networking.

  • 0

Was originally going to do it in XNA/C# however I wanted to make it cross platform without having to do major re-writes. At this point the only changes to go from linux to windows is a third part pthread class, and a couple different libs for networking.

Have you considered MonoGame? If anything you should have even less code differences between platforms going .NET/MonoGame than C++/SDL. No need for different libraries for threading and networking, for instance, as that's standard in .NET.
  • 0

Have you considered MonoGame? If anything you should have even less code differences between platforms going .NET/MonoGame than C++/SDL. No need for different libraries for threading and networking, for instance, as that's standard in .NET.

I had considered it. However the C++ also serves the dual purpose of teaching me C++. I am proficient in C#/VB/PHP so I figure I might as well learn C++ syntax as well.

This topic is now closed to further replies.
  • Posts

    • Lol I had one of these turn faulty in Jan, guess it wasn't just bad luck lol
    • I'm team Rossmann all the way. I have the exact same NVME, altough not in an array like him.
    • It had gone weeks ago. Although thinking about it I'm on the beta.
    • They thought value of their goods would forever only drop like it used to and didn't account for sudden increase in price because of all the Ai hype. Tough luck Samsung, don't try to weasel this one out. Also American customer protection laws are a**. In Europe, you need to be compensated for a functioning product of same or better characteristics (not same price point as when it was originally bought!) if it can't be repaired and when you receive a replacement product your warranty starts from scratch because you received a different item than you previously had and old warranty thus cannot apply to it anymore. If your actual item was successfully repaired, warranty gets extended for the period the item was in service. If item is repaired to a significant extent, warranty also starts over from scratch because major part of it was replaced. Americans need to fight to get this kind of consumer protections because they are constantly getting screwed over.
    • Microsoft releases new Windows 11 Media Creation Tool with the latest updates by Taras Buria Patch Tuesday updates arrive every month, bringing users new features and security updates. To make sure customers have access to the most recent images, Microsoft also releases updates to the Media Creation Tool app, its official utility for Windows 11 installation. Today, the company pushed new ISOs to Media Creation Tool, allowing you to create images with the June 2026 Patch Tuesday updates. With the latest update, the Media Creation Tool now downloads KB5094126. It is Windows 11 version 25H2, build 26200.8655, which is also available via Windows Update. Note that the app itself remains on the previous version, which you can check in Properties > Details. The only change is that it now downloads a more recent Windows 11 build, so the only way to check is to download an ISO. The June 2026 Patch Tuesday update is a special release for Windows 11, as it brings a new performance profile to make the operating system more responsive and snappier when rendering various user interface surfaces, including the Start menu, quick settings, and more. It does so by spiking processor speeds for a brief moment, resulting in higher loads for a second or two. The so-called “Low latency profile” is rolling out gradually, but you can force-enable it with the ViVeTool app. Other changes include webcam improvements, Task Manager updates, shared audio support, and more. You can download the Media Creation Tool app from the official Microsoft website using this link. Besides MCT, Microsoft lets you download Windows 11 ISO as a file directly from the official Windows 11 website. However, you will need a third-party app to write it to your USB drive. Check out this guide if you want to know how to do that.
  • Recent Achievements

    • Week One Done
      davidbazooked earned a badge
      Week One Done
    • One Month Later
      Jamswaz earned a badge
      One Month Later
    • Week One Done
      Jamswaz earned a badge
      Week One Done
    • Rookie
      Marzoid went up a rank
      Rookie
    • Community Regular
      coch went up a rank
      Community Regular
  • Popular Contributors

    1. 1
      +primortal
      511
    2. 2
      PsYcHoKiLLa
      184
    3. 3
      +Edouard
      159
    4. 4
      Steven P.
      83
    5. 5
      ATLien_0
      75
  • Tell a friend

    Love Neowin? Tell a friend!