pthread_create 인자에 대해

tatchi의 이미지

pthread_create 함수에 전달하는 인자에 대해 질문 드립니다.

아시다시피 pthread_create 함수의 원형은 다음과 같습니다.

int  pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*func)(void *), void *arg);

이 때 마지막 arg에 대한 질문입니다.

arg에

char* name = (char*)malloc ( sizeof(char) * 10 );

로 선언한 인자를 넣을 땐, 함수 func 내에서 인자의 첫 10 글자 정도가 깨져서 들어옵니다.
하지만 arg에
char name[10];

로 선언한 인자를 넣을 땐 깨짐 현상이 없습니다.

참고로 pthread_create 함수는 다음과 같이 불렀습니다.

pthread_create ( &new_th, &attr, name_func, (void*)name );

사실 전부 깨지는 것도 아니고 첫 몇 글자만 깨지는 현상이 발생하니 원인을 알아내기가 힘드내요.
끙끙거리다가 이렇게 질문드립니다.

정보가 충분하지 않다면 댓글로 질문주세요. 답변드리겠습니다.
감사합니다!