방금 C에서 LinkedList를 만들었고 clear
함수가 있습니다.C - 스레드에서 데이터 구조 해제?
clear 함수는 LinkedList를 통해 반복하고 각 노드에서 free()
을 호출합니다. 이것은 그것이 느린 O(n)
함수라는 것을 의미합니다.
pthread
(I 약을 모르거나 다른 스레드 라이브러리)를 만들 경우, 그것을 내
root
노드를 제공 NULL 내 LinkedList의의
root
노드를 설정 한 다음 스레드가 목록 동안 메모리를 정리해야 이제 즉시 추가 할 준비가 되셨습니까? 이 일에 위험이 있습니까? 필자는 필 요할 공간이 충분하기 전에 사용자가 LinkedList에 더 많은 데이터를 추가 할 수 있다는 의미일까요? 그것은 신용 카드와 같지만 기억을위한 것입니다.
안전한가요? 이런 유형의 상황에 대해 강력하고 신속한 코드를 만들려면 무엇이 필요할까요?
"... 매우 느립니다." - 뭐라구? 물론, 생각하는 것처럼 메모리 누수가 더 빠를 수도 있습니다. 그 말 : 당신이 무엇을 요구하는지 분명하지 않습니다. 필요한 모든 정보를 [mcve]에게 제공하십시오. – Olaf
링크 된 목록은 일반적으로 성능이 좋지 않으며 할당 해제로 인해 수행되지 않습니다. 벤치 마크가 없으면 참조 시스템과 성능 요구 사항이 답할 수 없습니다. – nwp
제 의견으로는 이것이 전체 연결된 목록을 지우는 유일한 방법입니다. "내 LinkedList의 루트 노드를 NULL로 설정 한 다음 스레드가 메모리를 정리하도록하십시오"만약 당신이'루트'노드를 잃어버린다면 어떻게 다른 노드에 접근 할 수 있습니까? – Mouin