C++ bad_alloc at memory location Exception

48,000

Solution 1

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.

Solution 2

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

Solution 3

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.

Solution 4

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

Share:
48,000
user272671
Author by

user272671

Updated on August 27, 2020

Comments

  • user272671
    user272671 almost 4 years

    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(); 
    }