*int) :
s : = []*int {new (int), new (int)}
s = s [: 1]
길이는 1이되지만 후원 배열은 그대로 유지됩니다. 두 번째 요소의 사용하지 않은 포인터는 여전히 배열의 일부로 메모리에 있습니다. 그것은 어떤 조각으로도 참조되지 않기 때문에 접근 할 수 없게되며 쓰레기 수집가에 의해 자유롭게 해방 될 수 없어 메모리 누출을 초래합니다.
s := []*int{new(int), new(int)}
2}
s = s[:1]
포인터 및 스트러크
가 포인터를 포함하는 스트러크를 보유 할 때 :
t := []int{1, 2}
슬라이스가 Book1 만 유지하더라도 Book2의 저자 및 제목 문자열은 여전히 배열의 일부로 메모리에 있습니다. 이를 방지하려면 슬라이싱하기 전에 Book2에 Zero 값을 할당하십시오. bkslice = bkslice [: 1]
이것은 book2의 문자열에 대한 참조를 제거합니다. 예를 들어, 포인터, 슬라이스 또는 기타 복잡한 데이터 구조 인 필드가있는 structs는 외부 참조를 차단하기 위해 재판매하기 전에 제로를 제로해야합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3