Есть элементарная программа. Почему адрес структуры thr1_arg в функции-потоке отличается от адреса, передаваемого в pthread_create
struct thread_arg
{
myclass<unsigned> *p;
unsigned thr_num;
};
void *thr_fun(void *arg)
{
thread_arg *cxt = (thread_arg *)(arg);
printf("arg %p\n", arg);
return (void *)0;
}
int main(void)
{
int err;
pthread_t t;
myclass<unsigned> mc;
thread_arg thr1_arg;
thr1_arg.p = &mc;
thr1_arg.thr_num = 1;
printf("thr1_arg.p = %p &mc = %p &thr1_arg = %p\n", thr1_arg.p, &mc, &thr1_arg);
err = pthread_create(&t, NULL, thr_fun, &thr1_arg);
printf("2\n");
thr1_arg.p = 0xbf816a18 &mc = 0xbf816a18 &thr1_arg = 0xbf816a10
2
arg 0xbf816a08