Exceptions und Zeiger dereferenzieren
-
Hallo.
Lässt sich denn keine SEH-Exception zu einer C++-Exceptionkonvertieren wenn das dereferenzieren eines Zeigers fehlschlägt?
Das soetwas klappt, weiß ich. Aber nicht wie.
Da ich denke es könnte compilerspezifisch sein, ich nutze VC++ 2008 Express.Hier mein Ansatz, wirft nichts und crashed fröhlich wenn ein Zeiger 0 ist:
float x; float y; float z; try { DWORD gameBase = *reinterpret_cast<DWORD*>(ROM_GAMEBASE); DWORD player = *reinterpret_cast<DWORD*>(gameBase + PLAYERPOINTER); x = *reinterpret_cast<float*>(player + OBJECT_XPOS); y = *reinterpret_cast<float*>(player + OBJECT_YPOS); z = *reinterpret_cast<float*>(player + OBJECT_ZPOS); } catch(...) { wxMessageBox(L"Couldn't set waypoint. Try again", L"Navigator Error", wxOK | wxICON_ERROR, this); return; }Würde mich über Hilfe freuen, danke.

Grüße,
FloEdit: Argh, hätte wohl eher ins Win Forum gehört. Bin schwer müde

-
s. http://stackoverflow.com/questions/315948/c-catching-all-exceptions
For catch(...) to work on all exceptions make sure that in the C++ settings, "Enable C++ Exceptions" is set to "Yes With SEH Exceptions"
-
Wieso machst du nicht was Standardkonformes?
template <typename Dest, typename Source> Dest& cast_and_dereference(Source* src) { if (src == NULL) throw std::runtime_error("null pointer dereferenced"); return *reinterpret_cast<Dest*>(src); } DWORD player = cast_and_dereference<DWORD>(gameBase + PLAYERPOINTER);
-
Icematix schrieb:
Hallo.
Lässt sich denn keine SEH-Exception zu einer C++-Exceptionkonvertieren wenn das dereferenzieren eines Zeigers fehlschlägt?
Das soetwas klappt, weiß ich. Aber nicht wie.Kann nie zuverlässig funktionieren. Warum wurde schon oft erklärt.