pthread_create11121

#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>

void* test(void* args) {
    int a =  *(int *) args;
    printf("a:%d
", a);
}

main() {
    pthread_t pid;
    int x = 123;
    pthread_create(&pid, NULL, &test, &x);
    //sleep(1);

    printf("-------------
");
}

上面这段程序运行结果为

-------------
a:123
a:123

很奇葩?实际上是因为变量x内存被释放,导致test线程中出现未知的异常

加上sleep(1)后能保证线程创建时传递的值使用时是ok的

a:123
-------------

原文地址:https://www.cnblogs.com/muhe221/p/8350196.html