C++ bad_alloc at memory location Ausnahme
Nicht behandelte Ausnahme bei 0x758cd36f in OSGP.exe: Microsoft C++ - Ausnahme: std::bad_alloc at memory location 0x0028ef70..
Ich versuche, führen Sie den folgenden code in Visual Studio. Allerdings habe ich immer wieder mit der Ausnahme oben. Ich habe ein try catch um Hilfe mir fangen die Fehler aber ohne Erfolg wie es scheint. Ich glaube das problem bezieht sich auf die folgenden aus dem Ausgabe-Fenster
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).**
Hier der 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();
}
osgDB::readNodeFile("cessna.osg");
zurückgeben kann nullptr wenn es nicht gelingt, die Datei zu öffnen. Zur info Zuordnung eines bool
zu einem int
flag, das ist schon mal nicht wirklich verwendet wird, ist auch ein bisschen dumm 😉Die meisten der Ausgang ist nur der debugger sagen Sie es nicht finden können, die Programm-Datenbank (symbol) - Datei.
Schalten Ausnahme Haltepunkte in
Debug->Exceptions...->C++ Exceptions
so dass Sie aufhören, wenn die bad_alloc geworfen wird.InformationsquelleAutor user272671 | 2012-06-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
std::bad_alloc wird Häufig ausgelöst, wenn das Programm nicht genügend Arbeitsspeicher zum abschließen des angeforderten Aktion.
Mögliche Probleme:
diese auf
eine unendliche Menge an Speicher
Aber es ist unmöglich zu sagen, mit der Informationen gegeben.
Sie werden nicht in der Lage, um das Debuggen der Fehler, wie es passiert ist in OSGP.exe es sei denn, Sie haben-source-code und Symbole für OSGP.exe. Sie können auch die visual studio-Eingabeaufforderung, wenn Sie die exception geworfen wird, anstatt mit den try/catch-indem Sie auf der Debug->Ausnahmen und fügen Sie std::bad_alloc als eine C++ - Ausnahme
InformationsquelleAutor Ryan Erickson
Einem bad alloc, kann auch geworfen, wenn es ein Zeiger auf ungültigen Speicher weitergeleitet wird, in ein Objekt-Konstruktor.
InformationsquelleAutor Robin Rowe
Ich soll qualifizieren diese Reaktion, durch die Offenlegung, dass meine coding-know-how großzügig beschrieben als Neuling.
Ich hatte einen ähnlichen Fehler mit dem code, dass ich laufen war. Die Ursache zu sein schien, war, wenn ich ein neues array deklarieren und zwar so:
Ich Tat das viele Male (Millionen?) in meinem code. Es sieht aus wie ich schließlich ran out of memory. Das Update war das löschen der variable als ich fertig war.
Hatte nie Probleme danach.
InformationsquelleAutor Ali
Ich finde, dass dies passiert, wenn Sie versuchen zu Lesen, über das Ende eines array.. Das ist, wenn Sie versuchen, Zugriff auf mehr Elemente als die Anzahl der Elemente im array.
InformationsquelleAutor mahela007