Hallo Community!
Ich habe ein Programm mit einem Thread geschrieben (Aufruf mit _beginthread, nicht CreateThread).
Der Thread kann auf zwei verschiedene Arten beendet werden: Entweder er beendet sich selbst mit _endthread oder er wird von außen mit TerminateThread beendet. Im ersten Fall gibt er alle mit malloc() reservierten speicherbereiche wieder frei. wenn er "von außen" unterbrochen wird, geschieht das nicht. Ist das ein Speicherleck oder kann ich davon ausgehen, dass Speicher, der innerhalb des Threads alloziert wurde, nach dessen beendung wieder freigegeben wird?
lg, pRessman
Seite 1 von 1
Heap-speicher Eines Threads Nach Dem Beenden Freigeben?
Anzeige
#2
geschrieben 04. August 2008 - 16:05
Natürlich wird der Speicher nicht freigegeben (von wem auch) und es entstehen Memoryleaks.
Schick doch einfach eine Nachricht an den Thread, dass er alsbald aufhören soll, z.B. mit PostThreadMessage().
Ebenfalls ist es oftmals komfortabler _beginthreadex statt _beginthread zu nutzen, wg. Identifier und anderen Optionen.
Gruß,
Stefan
Schick doch einfach eine Nachricht an den Thread, dass er alsbald aufhören soll, z.B. mit PostThreadMessage().
Ebenfalls ist es oftmals komfortabler _beginthreadex statt _beginthread zu nutzen, wg. Identifier und anderen Optionen.
Gruß,
Stefan
#3
geschrieben 04. August 2008 - 18:23
Danke für die Information. Um den Thread zu beenden benutze ich eine Struktur (bzw. Zeiger auf eine Struktur, die ich über den void* -parameter der _beginthread-Funktion übergeben habe), die sowohl im Thread als auch im Hauptprozess benutzt wird, dort habe ich einen 'volatile int interrupt;' eingefuegt. dieser wird regelmäßig abgefragt und falls er != 0 ist, wird die Ausfürung unverzüglich beendet. Gleicher Effekt, leichter in mein spezielles Programm zu integrieren und sicher genauso wirkungsvoll
- ← 'standalone'-anwendung Mit Vs C++ 2008 Express?
- Programmierung
- Imagelist In Listview (icons Werden Nicht Ausgegeben) →
Thema verteilen:
Seite 1 von 1

Hilfe
Neues Thema
Antworten
Nach oben

