C++ bad_alloc at memory location Exception

3

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(); 
}
c++
visual-studio-2010
opengl
openscenegraph
asked on Stack Overflow Jun 7, 2012 by user272671 • edited Jun 7, 2012 by Captain Obvlious

5 Answers

8

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.

answered on Stack Overflow Jun 7, 2012 by Ryan Erickson • edited Jun 7, 2012 by Ryan Erickson
2

I should qualify this response by disclosing that my coding expertise can be generously described as novice.

I had a similar error with some code that I was running. The cause appeared to be when I was declaring a new array like so:

path_chr = new char [path.size()+1];

I was doing this many times (millions?) in my code. It looks like I eventually ran out of memory. The fix was deleting the variable when I was done.

delete [] path_chr;

Never had problems after that.

answered on Stack Overflow Jul 26, 2012 by Ali
2

A bad alloc may also get thrown if there's a pointer to invalid memory being passed in an object's constructor.

answered on Stack Overflow Mar 28, 2014 by Robin Rowe
0

I find that this happens when you try to read past the end of an array.. That is, if you try to access more elements than the number of elements present in the array.

answered on Stack Overflow Dec 17, 2012 by mahela007
0

Change solution platform x86 to x64. RAM is 16Gb but visual addressing only 4Gb block by x86 Configuration Manager

answered on Stack Overflow Aug 27, 2020 by Ă–mer Faruk Acar

User contributions licensed under CC BY-SA 3.0