pthread_create()
으로 새 스레드를 시작한 다음 pthread_detach()
을 사용하여 분리했다고 가정 해 봅시다. 자, 부터까지 스레드 컨텍스트에서 malloc()
을 사용하여 메모리를 할당했습니다.pthread 릴리스에서 메모리를 해제 했습니까?
스레드가 종료되면 malloc'ed
메모리가 자동으로 해제됩니까?
pthread_create()
으로 새 스레드를 시작한 다음 pthread_detach()
을 사용하여 분리했다고 가정 해 봅시다. 자, 부터까지 스레드 컨텍스트에서 malloc()
을 사용하여 메모리를 할당했습니다.pthread 릴리스에서 메모리를 해제 했습니까?
스레드가 종료되면 malloc'ed
메모리가 자동으로 해제됩니까?
이제 할당 된 메모리는 스레드에 연결되지 않으므로 스레드 종료시 free()가 아닙니다. 물론 특수 취급 인 메커니즘을 제공 할 수는 있지만 자동으로 수행되지는 않습니다.
좋은 점은 스레드간에 메모리 할당을 전달할 수 있다는 것입니다. 즉, 하나의 스레드에서 이러한 자원을 할당 한 다음 다른 스레드에서 할당 할 수 있습니다 (좋은 점이 아닌지).
희망이 유용한 설명이 될 것입니다, 할당 된 메모리 포인터를 모든 프로세스 수준의 디스크립터에 대해 생각하십시오.
나는 그다지 확신 할 수 없다. free()를 사용해야한다.
No-malloc'ed 메모리는 명시 적 'free'로만 해제됩니다.
아니요 프로세스가 종료 될 때 malloced 메모리가 해제되는 동안 스레드가 종료 될 때도 마찬가지입니다.
스레드와 프로세스의 차이점은 프로세스가 힙 메모리 스레드와 같은 리소스를 소유하고 있다는 것입니다. 이 기능을 원하면 프로세스가 스레드가 아니길 바란다.
일반적인 데스크탑/서버 OS에서 적어도 모든 프로세스가 종료 될 때. – nos
일반화하지 마십시오. 프로그램이 종료되면 해제됩니다. 그리고 그 이후로는 .. – TimZaman