몽상실현개발주의

[따배씨] 12.1 메모리 레이아웃 훑어보기 본문

Language/C

[따배씨] 12.1 메모리 레이아웃 훑어보기

migrationArc 2021. 6. 13. 15:32

[따배씨] 12.1 메모리 레이아웃 훑어보기

따배씨 - 따라하며 배우는 C언어

12강 Storage Classes, Linkage and Memory Management

12.1 메모리 레이아웃 훑어보기

  • 프로그램 코드는 변형이 되면 안되기 때문에 TEXT Segment 에 읽기 전용으로 저장됨
  • 프로그램이 실행되면서 코드도 프로그램이 종료 될 때 까지 메모리 계속 존재

 

  • 전역변수로 메모리를 선언하는것이 가장 편하지만, 프로그램이 끝날 때 까지 메모리가 할당 되어 있는것은 비 효율적임

 

  • 블럭 안에서 선언되는 메모리는 stack 에 할당, 그 블럭이 실행되는 동안에만 메모리에 할당되고 블럭의 실행이 종료되면 운영체제에게 메모리 권한을 넘겨줌
    • 효율적인 메모리 사용 가능
    • main() 함수에 선언된 변수의 메모리는, main 함수의 특성상 프로그램이 종료될때 까지 유지되므로 전역변수에서 선언한 것 처럼 할당 됨

 

  • 함수를 호출하는 방법으로 큰 메모리를 사용하는것이 더 효율적

 

  • stack 메모리의 관리는 운영체제가 하는것이 원칙이나, 프로그램 실행시 stack 메모리의 크기가 할당되는것 compile 단계에서 결정됨
    • stack 의 메모리가 늘었다 해제되었다 하는 동작이 매우 빠름
    • stack에 선언된 지역 변수들은 속도가 빠름

 

  • 프로그램의 대부분의 경우 메모리를 예측하기 힘듬
    • Compile 단계에서 메모리 크기를 미리 할당해 주기가 어려움
  • Heap 메모리 공간을 사용하여 필요한 순간마다 공간을 할당받아 사용
    • 자유 공간을 stack 메모리와 함께 사용하면서 메모리 주소가 겹치는 문제가 발생 할수 있는것을 가상 메모리 주소를 사용하는것으로 해결
    • Heap 영역의 메모리는 다 사용한 메모리를 반납해야 함
    • 메모리를 관리하는 운영체제에 직접 호출하여 할당받고 반납하며 사용하기 때문에 느리게 동작
  • c 는 unmanaged memory 언어

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

Comments