반응형 heap2 Golang의 fmt.Print는 heap으로 간다? Golang에는 fmt라는 패키지가 있습니다. 그리고 fmt.Print 를 사용하여 사용자에게 출력해주죠. 하지만 fmt를 사용하여 변수를 출력하면 해당 변수는 stack에서 heap으로 가버리게 됩니다. 다음 예시를 봅시다. package main import "fmt" func main() { i := 10 fmt.Println(i) } $ go build -gcflags '-m' struct.go # command-line-arguments .\struct.go:7:13: inlining call to fmt.Println .\struct.go:7:13: i escapes to heap .\struct.go:7:13: []interface {}{...} does not escape :1: .this.. 2021. 5. 23. 메모리 구조에 대해서(stack, heap, buffer overflow) 프로그램을 만들고 실행을 하게되면 메모리 라는 곳에 코드들이 올라가 실행되게 됩니다. 사실 메모리는 물리적 메모리(Physical Memory)와 가상 메모리(Virtual Memory)로 나뉘게 됩니다.일반적으로 코드를 실행하면 가상메모리에 적재 됩니다. 물리적 메모리는 RAM이고 가상 메모리는 HDD의 용량에서 가져와 사용하게 됩니다.운영체제는 프로그램을 실행할 때 필요한 최소정보만 RAM에 저장을 합니다.그리고 이를 Working set이라고 합니다. 그 후 프로그램을 실행하면서 필요한 데이터 정보를 가상 메모리에서 가져와상황에 맞게 물리적 메모리에 맵핑하고 맵핑을 해제하고이런 작업을 반복하게 됩니다. 이것을 페이징(Paging)기법 이라고 합니다. 가상메모리의 주소 데이터들을 일정한 크기의 블록으.. 2019. 1. 19. 이전 1 다음 728x90 반응형