문제

가정하자 나는 다음과 같은 코드:

while(TRUE) {
  pthread_t *thread = (pthread_t *) malloc(sizeof(pthread_t));
  pthread_create(thread, NULL, someFunction, someArgument);
  pthread_detach(*thread);
  sleep(10);
}

이 분리된 스레드에 할당된 메모리에 의해 malloc,또는 그가 이해야 할까요?

도움이 되었습니까?

해결책

No. 지칭() 알 길이 없는 스레드 포인터를 통과하는 그것에 동적으로 할당됩니다.인수를 입력하지 않는 이 값을 사용하여 내부적으로;그것은 단순히 반환합 새로운 스레드 id 를 발신번호를 입력하실 수 있습니다.당신이 필요하지 않을 동적으로 할당하는 값;로 전달할 수 있습의 주소는 지역 변수는 대신:

pthread_t thread;
pthread_create(&thread, NULL, someFunction, someArgument);

다른 팁

당신이 필요로하는 메모리 자신입니다.그것은 바람직 것을 단순히 할당 pthread_t 스 변수에 반대합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top