Bonjour,
J'essaie de passer une structure à un thread sous Visual C++ express.
Voici mon petit bout de code:
Problème voici ce que j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #include <windows.h> #include <iostream> #include <process.h> using namespace std; struct Structure { int variable; }; Structure structure; HANDLE hThread; unsigned __stdcall Thread(void *arguments) { Structure *pStructure = reinterpret_cast<Structure*>(arguments); cout << "Variable dans thread= " << pStructure->variable << endl; return( 0 ); } void main ( int argc, char** argv ) { unsigned ThreadId; Structure *pStructure = &structure; pStructure->variable=1; cout << "Verif variable 1 = " << structure.variable << endl; cout << "Verif variable 2 = " << pStructure->variable << endl; hThread = (HANDLE)_beginthreadex(NULL, 0, Thread, &pStructure, 0, &ThreadId); if (hThread == 0) { cout << "Erreur au lancement du thread : " << strerror(errno) << endl; cout << "Code erreur thread DOS : " << _doserrno << endl; } getchar(); CloseHandle(hThread); }
Ma variable n'est plus égal à 1 mais à 4327524 dans le thread, d'ou peut venir ce problème ? Un mauvais "castage" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Verif variable 1 = 1 Verif variable 2 = 1 Variable dans thread= 4327524
Cordialement.
Partager