Code nach exit()
-
Hi, ich habe einen Thread, der exit(0) ausführt und dazu ein Window
Code:hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, &dwThreadId); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } CloseHandle(hThread); FreeLibrary(dll); WSACleanup(); return 0;Also der Thread hThread führt direkt exit(0) aus und damit schließt sich das Programm.
Und jetzt frage mich, ob der Code weiter unten noch ausgeführt wird.
Also dasCloseHandle(hThread); FreeLibrary(dll); WSACleanup();Das ist ja zum "Aufräumen".
Wird das noch ausgeführt? Ist das überhaupt notwendig, oder wird sowieso aufgeräumt, wenn sich das Programm schließt?
-
Aus reiner (ANSI)-C-Sicht wird mit dem Aufruf von exit() die Liste der via atexit() registrierten Funktionen abgearbeitet. Inwiefern durch Multithreading/processing da evtl. Seiteneffekte auftreten, klären wir besser im WinAPI-Forum.
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Mach doch mal direkt hinter CreateThread() nen Sleep(5000) oder so und lass dann hinter WSACleanup() noch ne MessageBox() aufpoppen oder so.
Kommt keine MessageBox() wird das Programm wohl abgewürgt.Rein-theoretisch wird sowieso aufgeräumt, aber sauber wäre das nicht

Besser wäre z.B. wenn der Thread statt exit() an dein Fenster z.B. nen WM_CLOSE sendet.