2017-12-26 14 views
-3

나는 Go를 배우기 시작했고, 내가 정보를 찾을 수없는 것을 발견했습니다.이동 중에 메모리를 확보하는 방법은 무엇입니까?

예를 들어, 나는 내 자신의리스트 구조

type elem struct { 
    prev *elem 
    next *elem 
    value string 
} 

만들고 있어요한다면 어떻게 그들을 제거해야

Current.next = &elem{} 

으로 새로운 요소를 추가? 내 말은, 목록 에서뿐만 아니라 메모리에서 elem 데이터를 어떻게 제거 할 수 있습니까?

+4

가비지 수집됩니다. 데이터 구조에서 제거하는 것 외에는 아무 것도하지 않습니다. – JimB

+0

@JimB는 가비지 수집기가 메모리의이 데이터를 쓰레기로 인식하는 순간을 설명 할 수 있습니까? (그것을 얻지 않았다) – CrazyWu

답변

5

이동 가비지 수집이 있습니다. 포인터가없는 데이터를 검색하여 힙에서 제거합니다 (가비지 콜렉터가 프로그램 옆에서 실행 중입니다). 당신이해야 할 유일한 것은입니다 :

귀하의 elem{}
Current.next = null 

가 (. 그것은 결정이 아니다 elem{}이 해제 될 때 정확히 말할 수 없다) 당신이 모든 포인터를 제거 결국 한 후 메모리에서 제거됩니다. 가비지 수집에는 여러 가지 구현이 있습니다. Go의 구현은 언제든지 변경 될 수 있습니다.

Current이 범위를 벗어나면 next에서 null으로 설정할 필요가 없습니다.

+0

좋은 설명을 주셔서 감사합니다 – CrazyWu

+0

@ CrazyWu 당신 환영 : –

관련 문제