下面两段代码的输出结果分别可能是什么?请简述原因。
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; }