printf("%s\n", (char*)ent->d_name);
给了我未定义的行为。我只是在输出中得到奇怪的符号,有时后面是随机字母。ent
是一个不同的结构。
它是在传递给 pthread 的函数中声明的。
void * copyFile( void * arg ){
struct dirent *ent = (struct dirent *)arg;
printf("%s\n", (char*)ent->d_name);
}
并像这样调用:
int ret = pthread_create(&thread_list[i], NULL, copyFile, &ent);
ent
我尝试在调用函数中在原件上打印名称,它工作正常。所以问题出在转移和重新分配/铸造的某个地方。