Warum generiert dieser Code eine NullReferenceException???
-
Hallo,
wenn der nachfolgende Code mit Visual STudio 2003 als RELEASE ausgeführt wird, gibt es beim Ausführen der Zeile
Testfunc(&list);
eine NullReferenceException.Warum?
Projekt zum Download siehe auch: http://www.codeguru.com/forum/showthread.php?t=477583
// Die Hauptprojektdatei für ein VC++-Anwendungsprojekt, // das mit dem Anwendungs-Assistenten generiert wurde. #include "stdafx.h" #using <mscorlib.dll> using namespace System; public __value struct TestStruct { public: int curDivTime; int time1; int time2; }; public __abstract __gc class TestClass { public: static void Testfunc(TestStruct (*testList)[]); static void TestfuncCaller(void); }; void TestClass::Testfunc(TestStruct (*testList)[]) { try { *testList = new TestStruct[5]; for (int i=0; i<5; i++) { if (i>0) { (*testList)[i].curDivTime = 7; (*testList)[i].curDivTime -= (*testList)[i-1].curDivTime; } } } catch (...) { } } void TestClass::TestfuncCaller(void) { TestStruct list[]; list = new TestStruct[5]; Testfunc(&list); //NULLREFERENCE-EXCEPTION when executing this line! } int _tmain() { TestClass::TestfuncCaller(); return 0; }
-
Debug dohc rein oder mach halt traces,
Simon
-
dohc? Traces? Was meinst Du damit?
-
dohc = doch.
Traces ist Code der etwas zu Debug Zwecken ausgibt (z.B. auf den Debug Output oder die Console...)
Simon
-
Was bitte willst Du Debuggen/Anzeigen wenn die Fkt. einfach nicht eingesprungen wird und statt dessen die Exception kommt?
Ist doch nicht meine erste Zeile Code....
-
Ist da ein Fehler in der Schleife oder überseh ich grad was ?
.. was geschieht denn wenn i = 1 ist, aber (*testList)[0] nicht definiert ist.
if (1>0)
{
(*testList)[1].curDivTime = 7; // Definiere 1-5, NICHT 0
(*testList)[1].curDivTime -= (*testList)[1-1].curDivTime; // (*testList)[0]
}Hoffe mal ich lieg da jetzt richtig
-
Jungs, alles voll daneben. Ihr hättet es nur mal runterladen und testen müssen.
Hier gab es bessere Hilfe:
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/c1ad548a-e75e-4cb2-af2a-75b468c5773c?prof=requiredEs ist aber noch was offen (siehe link oben), wenn sich noch jemand daran versuchen möchte bitte gerne...!
-
Ich konnte es gerade nur in VS2008 mit /clr:oldsyntax testen... und da geht es...
Mach mal bei der Klasse das __abstract weg; vermutlich bringt ihn das durcheinander...
-
Nein, mit/ohne __abstract ändert nichts.
-
Es ist wohl offensichtlich ein Problem mit den Optimierungen...
Wenn es ein Blockierendes Problem ist, dann wende Dich an den MS Product Support.
Falls Du eine MS Scubscription hast, dann hast Du auch min. 3 Anfragen kostenfrei. Falls es ein Fehler von MS ist (was hier wohl der Fall ist), dann ist die Anfrage kostenlos (bzw. wird Dir gutgeschrieben).
Tel.: 01805 672255
oder
http://support.microsoft.com/selectindex/?target=assistance
-
Christian123456 schrieb:
Jungs, alles voll daneben. Ihr hättet es nur mal runterladen und testen müssen.
Hier gab es bessere Hilfe:
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/c1ad548a-e75e-4cb2-af2a-75b468c5773c?prof=requiredEs ist aber noch was offen (siehe link oben), wenn sich noch jemand daran versuchen möchte bitte gerne...!
Meinst Du Crossposting und das "sucht euch selbst zusammen was ich von euch will" hilft Dir weiter ?