[C/C++] Passage d'argument sur _beginthread

Passage d'argument sur _beginthread [C/C++] - Programmation

Marsh Posté le 01-04-2002 à 10:16:51    

Salut,
Je souhaite passer un argument à la fonction _beginthread :
 
main()
{
int n = 5;
_beginthread(MonThread,0,(void*)n);
}
 
void MonThread(void*)
{
 printf("Le nombre : %d",id);
 _endthread();
}
 
La ça marche y pas de problèmes. Seulement je souhaite passer un char* et non un int :
 
main()
{
char buf[] = "test";
_beginthread(MonThread,0,(void*)buf);
}
 
void MonThread(void *id)
{
 printf("La chaine : %s",id);
 _endthread();
}
 
et la ça marche pas (ça compile mais c'est pas la chaine voulue qui est affichée), quelqu'un peut-il m'aider ? Merci

Reply

Marsh Posté le 01-04-2002 à 10:16:51   

Reply

Marsh Posté le 01-04-2002 à 10:42:39    

peut-etre parce que buf est une chaine allouee sur la pile donc
pointeur buf non valide apres l'appel a _beginthread?
 
LEGREG

Reply

Marsh Posté le 01-04-2002 à 11:09:49    

Comment faire alors pour résoudre ce problème ?

Reply

Marsh Posté le 01-04-2002 à 11:13:22    

static char buf[] = "test";

Reply

Marsh Posté le 01-04-2002 à 11:15:24    

antsite a écrit a écrit :

Comment faire alors pour résoudre ce problème ?  




 
utiliser une chaine dont la duree de vie n'est
pas limitee par le thread appelant.
C'est a dire soit une chaine declaree en global
soit une chaine allouee sur le tas
avec new. (le thread doit donc dans ce cas
faire le delete correspondant)
 
LEGREG

Reply

Marsh Posté le 01-04-2002 à 12:04:20    

D'accord je comprends mieux  :)  
Merci bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed