OSGP.exe中0x758cd36f处的未处理异常:Microsoft C ++异常:内存位置为0x0028ef70的std :: bad_alloc ..
我正在尝试在Visual Studio中执行以下代码。但是,我一直遇到上面的例外。我添加了一个try catch来帮助我捕获错误,但似乎无济于事。我认为问题与输出窗口中的以下内容有关
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).**
以下是代码:
#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();
}
答案 0 :(得分:6)
std :: bad_alloc。
可能出现的问题:
但是不可能用所提供的信息说出来。
答案 1 :(得分:2)
如果在对象的构造函数中传递了指向无效内存的指针,则可能会抛出错误的alloc。
答案 2 :(得分:1)
我应该通过披露我的编码专业知识可以被慷慨地描述为新手来证明这一回应。
我运行的某些代码出现了类似的错误。原因似乎是当我宣布一个新的数组时:
path_chr = new char [path.size()+1];
我在代码中多次这样做(数百万?)看起来我最终耗尽了内存。修复是在我完成时删除变量。
delete [] path_chr;
之后从未遇到过问题。
答案 3 :(得分:1)
答案 4 :(得分:0)
我发现当你尝试读取数组的末尾时会发生这种情况。也就是说,如果你尝试访问的元素多于数组中存在的元素数量。