Prblem mit SDL Threads und structs
-
Hallo!
Ich habe folgendes Problem:
ich habe folgende Thread Funktion:
int check2(void *set2) { SocketSet *test=(SocketSet*)set2; SocketSet sSocket=*test2; printf("test %p", test2); printf("test %d", sSocket.test);Übergeben wird der Funktion ein Zeiger auf folgendes struct
struct SocketSet { SDLNet_SocketSet set; TCPsocket server; int test; Window *window; };Starte ich jetzt die Funktion normal funktioniert alles. Wenn ich jetzt allerdings diese Funktion in einem SDL-thread starte, erhalte ich mit den Zeigern auf struct Elemnte verkehrte Werdte und das Programm stürzt ab.
Das heißt sSocket.test sollte eigentlich 100 sein, ist jedoch plötzlich -12312324
Gestartet wird der Thread mit:
SDL_CreateThread(check2, &sserver);Hat jemand ne Idee woran das liegen könnte?
SubScrew
ps: der Zeiger hat komischerweise die korrekte Adressse
-
Kann es sein, dass deine struct auf dem stack liegt. Der Stack wird überschrieben, bevor die Threadfunktion startet. Leg die struct auf den Heap (malloc) und gib den Speicher am Ende der Threadfunktion frei.
-
Hallo!
Danke das hat das Problem beseitigt. Ich habe allerdings new benutzt^^
SubScrew