본문 바로가기

iOS

[iOS] 간단한 메모리 구조 - remind

 

프로그램이 RAM에 올라가서 프로세스가 됩니다.!

그래서 갑자기 메모리 영역을 알아보겠습니다. ㅎ

 

메모리는 크게 

코드 영역, 데이터 영역, 힙 영역, 스택 영역이 있습니다.

 

코드 영역

작성한 소스코드가 기계어로 저장되며 read only이다.

 

데이터 영역

전역변수 static 변수가 저장된다. 

프로그램 시작시에 메모리가 할당되고 프로그램 종료시 메모리가 해제된다.

실행도중 값 변경이 가능 read write

 

힙 영역

c언어에서 malloc을 써주듯이 동적 할당이 가능한 메모리 영역입니다. 

할당된 데이터를 사용후 메모리 해제를 해주지 않으면 memory leak이 발생합니다. 

런타임 하고 있을 때에도 데이터를 크기에 제한 없이 자유롭게 사용가능합니다. 

 

iOS에서는 클래스나 클로저같은 참조 타입의 값에서 사용됩니다. 공부를 하면서 따로 메모리 해제를 안해줬는데 이는 Swift의 ARC가 .. 알아서 해주기 때문입니다 (짱좋네 ) 

 

할당과 해제 작업을 해주면서 처리할게 스택보다 많아서 속도가 조금더 걸린다고 합니다. 상대적으로 스택보다 느릴뿐입니다.

 

스택 영역

 

지역변수, 매개변수, 리턴 값 등등 할당되며 함수가 종료되면 저장된 메모리도 해제된다. 

컴파일 할 때 한번에 영역의 사이즈를 할당시켜서 적용시키기 때문에 무한히 할당할 수 없다. 

속도가 빠름!!

 

추가로!

힙과 스택은 메모리영역을 공유합니다..

낮은 메모리 주소부터는 힙

높은 메모리 주소부터는 스택

'iOS' 카테고리의 다른 글

[iOS] MVC, MVVM 디자인 패턴  (0) 2021.03.31
[iOS] perfromSegue  (0) 2021.03.29
[iOS] Xcode Preview기능  (0) 2021.03.22
[iOS] UIAlertController 알림이랄까. 알람이랄까.  (0) 2021.03.22
[iOS] UITextField Placeholder 색바꾸기!  (0) 2021.03.07