VS2010 System.Runtime.InteropServices.SEHException bei new operator
-
theta schrieb:
Die Exception kommt von der CLR (.NET).
Ich sehe aber nicht dass .NET gebraucht wird, also schalte mal /clr ab.Sorry, wie meinst du das? / clr abschalten?
Lg
Maz
-
Bei den Projekt Einstellungen gibts CLR Support (oä.).. dort auf Kein CLR Support (oä.) stellen...
-
Und grundsätzlich bei neuen Projekten ein leeres Win32-Konsolenprogramm anlegen (Da ist der Schalter standardmäßig deaktiviert).
-
Hi Leute, ich denke das Problem liegt niht wirklich in diem wie oben angegeben , sondern an einer inewffizienten speicherverwaltung
ich habe oftmals dynamsiche heap allocationen in meinen Funktionen mit ..= new[int someint], die dann retourniert werden, jetzt habe ich gelesen dass diese speicher selbst nach funktionablauf nicht mehr freigegeben werden, sollte ich dann ein konstrukt wie folgend machen?
for(int i =0; i < X; i++){ double * arr; arr = somefunction(arr) -> der output wird mit new erzeigt ....tu etwas mit dem array.... delete[]arr; }
-

-
mazzok schrieb:
Hi Leute, ich denke das Problem liegt niht wirklich in diem wie oben angegeben , sondern an einer inewffizienten speicherverwaltung
Grundsätzlich deutet ein "System." tendenziell auf eine Fehlermeldung aus .Net hin. Und entweder bist du im falschen Forum (C++/CLI wäre für C++ mit .Net, und ja, das ist eine eigene Sprache), oder die Einstellungen deines Projektes stimmen nicht. Unabhängig davon das du vielleicht ein Fehler im Code haben könntest.
-
asc schrieb:
mazzok schrieb:
Hi Leute, ich denke das Problem liegt niht wirklich in diem wie oben angegeben , sondern an einer inewffizienten speicherverwaltung
Grundsätzlich deutet ein "System." tendenziell auf eine Fehlermeldung aus .Net hin.
Nein, ich glaube es gehört zusammen. Als ich schon das erste Mal diesen Thread gelesen habe, hatte ich diese Vermutung, war mir aber nicht so recht sicher. Nun verstärkt sich aber mein Verdacht.
In .Net wird eineSEHExceptionzum Beispiel dann geworfen, wenn von einem C++ Bereich eine C++ Exception in den .Net Teil fliegt. Daher denke ich, dass er einfach einestd::bad_allocException zugeworfen bekommt
Grüssli
-
Dravere schrieb:
In .Net wird eine
SEHExceptionzum Beispiel dann geworfen, wenn von einem C++ Bereich eine C++ Exception in den .Net Teil fliegt. Daher denke ich, dass er einfach einestd::bad_allocException zugeworfen bekommt
Dan sollte der OP in seinem nicht-CLR-Projekt trotzdem zuerst die /clr-Option deaktiviere und dann dem bad_alloc auf die Schliche kommen

-
pumuckl schrieb:
...und dann dem bad_alloc auf die Schliche kommen

mazzok schrieb:
...new[int someint], die dann retourniert werden, jetzt habe ich gelesen dass diese speicher selbst nach funktionablauf nicht mehr freigegeben werden...
Das dürfte dann ja nicht soo schwer sein

-
Hallo, Danke an eure vielen Beiträge
so wie dravere es gesagt hat, es bestand wirklich ein speichermanagement problem, alles funktioniert jetzt problemlos!
Lg
M