LINUX.ORG.RU

pthread arg address confusing

 


0

1

Есть элементарная программа. Почему адрес структуры 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



Последнее исправление: Afx33 (всего исправлений: 1)

Вообще хрень какая-то. Что печатает строчку «2»? Почему выводимые адреса отличаются по длине на один знак (вначале 8 знаков, потом 7 знаков)?

Krieger_Od ★★
()
Ответ на: комментарий от Krieger_Od

Я прощу прощения, «заклинило» на ерунде какой-то

Afx33
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.