首页 > 试题广场 >

下面两段代码的输出结果分别可能是什么?请简述原因。

[问答题]
下面两段代码的输出结果分别可能是什么?请简述原因。
int a = 0;
void func(int* i) {
    for (int i = 0; i < 1000000; i++);
    a = *i;
    free(i);
}
int main() {
    pthread_t t[3];
    for (int i = 0; i < 3; i++) {
        int* b = (int*)malloc(sizeof(int));
        *b = i;
        pthread_create(&t[i], NULL, (void*)&func, (void*)b);
    }
    for (int i = 0; i < 3; i++) {
        pthread_join(t[i], NULL);
    }
    printf("%d\n", a);
    return 0;
}


int a = 0;
void func(int* i) {
    for (int i = 0; i < 1000000; i++);
    a = *i;
    free(i);
}
int main() {
    for (int i = 0; i < 3; i++) {
        int* b = (int*)malloc(sizeof(int));
        *b = i;
        fork();
        func(b);
    }
    printf("%d\n", a);
    return 0;
}


难道没有人吐槽前端题考C++代码的???
发表于 2019-08-07 10:19:41 回复(4)