bad_aloc
-
Hallo,
hab ein Problem beim Verwenden von log4cpp. Bekomme immer eine bad_aloc exception. Kann mir jemand sagen was ich falsch mache?
Danke!mfg,
shedvoid Logger::init () { log4cpp::Appender* app = new log4cpp::FileAppender("FileAppender","/logs/testlog4cpp.log"); .... }
-
shed schrieb:
log4cpp::Appender* app = new }Du darfst nicht einfach nur new schreiben, der typ muss auch angeben werden zb:
new int;
-
der Typ ist doch log4cpp::FileAppender...oder versteh ich da was falsch!?

-
doch der Typ müsste passen.
bad_aloc gibts doch wenn nicht genug Speicher da ist.
Ich kenn jetzt den log4cpp nicht. Braucht das viel RAM? Wie viel hast du? OS?
-
1024. also an dem sollts nit liegen...
-
Schonmal mit einer Suchmaschiene nach bad_alloc gesucht?
Sicher das es diese Stelle ist?
Kannst du vll etwas mehr Code posten?
-
Hast du vielleicht den globalen Operator new überschrieben, und verwendest da drin dann LOG Ausgaben?

-
meine header datei:
...//#includes class Logger { public: static log4cpp::Category* myLog; void init (); };Mein cpp File:
#include "Logger.h" log4cpp::Category * LoggerFactory::myLog = NULL; void Logger::init () { log4cpp::Appender* appender = new log4cpp::OstreamAppender("logdummy", &std::cout); ..... }Im Main ruf ich das wie folgt auf:
Logger myLogger; myLogger.init();Danke!
-
Hm den Fehler seh ich momentan nicht, aber:
Du hast ein Potentielles Memory-Leck:Dein Pointer ist static: Wenn du 2x init() aufrufst ist klar, dass du einen appender zu viel hast, das passiert aber auch wenn du 2 davon hast und initialisierst.
-
Vielleicht hilft der source code von new.cpp weiter. Wenn ich debugge geht er in die while schleife nicht hinein! Sag das jemanden etwas?
Danke!
mfg,
shedvoid *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc) { // try to allocate size bytes void *p; while ((p = malloc(size)) == 0) if (_callnewh(size) == 0) { // report no memory static const std::bad_alloc nomem; _RAISE(nomem); } return (p); }
-
Hat dazu keiner eine Idee? Ich weiß nicht wie ich den Fehler lösen kann!

Danke!
mfg,
shed