C++ bad_alloc at memory location Exception

user272671 picture user272671 · Jun 7, 2012 · Viewed 44.8k times · Source

Unhandled exception at 0x758cd36f in OSGP.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0028ef70..

I am trying to execute the code below in Visual Studio. However, i keep running into the exception above. I added a try catch to aid me in catching the error but to no avail it seems. I believe the problem is related to the following from the output window

First-chance exception at 0x758cd36f in OSGP.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0019f2f4..
First-chance exception at 0x758cd36f in OSGP.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0019ec84..
First-chance exception at 0x758cd36f in OSGP.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
The thread 'Win32 Thread' (0x16dc) has exited with code 0 (0x0).
The program '[448] OSGP.exe: Native' has exited with code 0 (0x0).**

Here's the code:

#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <new>

#include "stdafx.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{ 
    int flag = false;
    osgViewer::Viewer viewer;
     osg::ref_ptr<osg::Node> root;
    try
    { 
        root = osgDB::readNodeFile("cessna.osg");
        viewer.setSceneData(root.get()); 
    }
    catch(bad_alloc)
    { 
        if (flag) cout << "a bad_alloc exception just occured"; 
    }
    return viewer.run(); 
}

Answer

Ryan Erickson picture Ryan Erickson · Jun 7, 2012

std::bad_alloc is commonly thrown when the program doesn't have enough memory to complete the requested action.

Possible problems:

  • cessna.org too large to be processed on the machine you are running this on
  • bad data/logic in cessna.org causing it to try to allocate an infinite amount of memory

But it is impossible to say with the information given.