CMemoryException in Thread

Hallo,

ich produziere absichtlich eine CMemoryException!

double* p= new double[1000000]; (ist nur ein Test; mein richtiges programm sieht anders aus)

-wenn ich die Zeile normal(nicht in einem anderen Thread) in meinem Programm aufrufe erhalte ich wie erwarte eine Meldung: „Out of Memory.“

-wenn ich die Zeile in meinem Thread aufrufe, wird mein Programm beendet!

Hab mit try/catch versucht die Exeption zu behandeln;

try
{
double* p= new double[1000000];
}
catch (CMemoryException e)
{
MessageBox(AfxGetMainWnd()->m_hWnd, _T(„hudihu“), _T(„Error“), MB_ICONERROR);
}

…hat auch nicht funktioniert
if(p==NULL) nütz auch nichts, da ich gar nicht so weit komm!

Kann mir jemand sagen wie ich diese Exception selber behandeln kann!?
Oder gibt es eine möglichkeit herauszufinden wie viel speicher genau im heap noch frei ist??

…merci …merci

Hallo,

Auch Hallo!

ich produziere absichtlich eine CMemoryException!

double* p= new double[1000000]; (ist nur ein Test; mein
richtiges programm sieht anders aus)

-wenn ich die Zeile normal(nicht in einem anderen Thread) in
meinem Programm aufrufe erhalte ich wie erwarte eine Meldung:
„Out of Memory.“

-wenn ich die Zeile in meinem Thread aufrufe, wird mein
Programm beendet!

Wurde der Thread auch mit AfxBeginnThread gestartet?
CMemoryException wird glaube ich von der MFC geschmissen, daher wird es vermutlich auch nur gehen wenn der Thread mit AfxBeginnThread gestartet wurde.

Hab mit try/catch versucht die Exeption zu behandeln;

try
{
double* p= new double[1000000];
}
catch (CMemoryException e)
{
MessageBox(AfxGetMainWnd()->m_hWnd, _T(„hudihu“),
_T(„Error“), MB_ICONERROR);
}

…hat auch nicht funktioniert
if(p==NULL) nütz auch nichts, da ich gar nicht so weit komm!

Kann mir jemand sagen wie ich diese Exception selber behandeln
kann!?
Oder gibt es eine möglichkeit herauszufinden wie viel speicher
genau im heap noch frei ist??

Aber sicher, guckst du in dir MSDN Library unter Platform SDK: Memory Management
Dort findest du u.a. HeapWalk und HeapQueryInformation…

…merci …merci

gruß pauli

hab ne lösung gefunden!! :smile:

verwende anstatt try catch die MAKROS TRY CATCH END_CATCH

…nun funktionierts

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]