Исходники и презентации
This commit is contained in:
34
lessons/slices_and_arrays/pointer_to_slice_element/main.go
Normal file
34
lessons/slices_and_arrays/pointer_to_slice_element/main.go
Normal file
@ -0,0 +1,34 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func printAllocs() {
|
||||
var m runtime.MemStats
|
||||
runtime.ReadMemStats(&m)
|
||||
fmt.Printf("%d MB\n", m.Alloc/1024/1024)
|
||||
}
|
||||
|
||||
func FindElement(numbers []int, target int) *int {
|
||||
for idx := range numbers {
|
||||
if numbers[idx] == target {
|
||||
return &numbers[idx]
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
var numbers = make([]int, 1<<30)
|
||||
pointer := FindElement(numbers, 0)
|
||||
_ = pointer
|
||||
|
||||
printAllocs()
|
||||
runtime.GC()
|
||||
printAllocs()
|
||||
|
||||
runtime.KeepAlive(pointer)
|
||||
}
|
||||
Reference in New Issue
Block a user