공학/프로그래밍

메모리 구조

뤠이튼 2021. 2. 27. 19:49

 

Stack 영역: 함수의 호출과 관련되어 있으며 프로그램이 자동으로 사용하는 임시 메모리 지역변수,매개변수,리턴값함수의 호출과 함께 할당되었다가 함수의 호출이 끝나면 소멸 해버립니다

 

  • stack은  함수가 호출되면 매개변수 반환 주소값 지역변수등이 저장되며 이렇게 저장되는 함수 호출정보를 스택 프레임이라고 합니다
  • 후입선출 구조
  • push로 저장하고 pop으로 뺴냄
  • 스택은 높은 번지의 메모리 주소 -> 낮은 번지 메모리 방향으로 할당됨 
  • 컴파일 하는동안에 크기가 결정됨
  • Stack overflow-stack이 heap영역을 침범

 

Heap 영역: 사용자가 직접관리하는 메모리로 필요에 의해 동적으로 메모리를 할당 할 때사용

할당해야하는 메모리의 크기를 프로그램이 실행되는동안 결정해야할떄 쓰는 메모리

 

  • 런타임에 결정됨
  • 메모리 크기
  • 전역 적으로 엑세스됨
  • 포인터로 접근하기에 상대적으로 느림
  • 메모리관리를 해야합니다
  • heap overflow-heap이 stack 영역을 침범

Data 영역: 메모리의 데이터영역은 프로그램의 전역변수와 정적 변수가 저장되는영역

데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.

 

  • 초기값이 없으면 bss(block started symbol)영역에 저장
  • 초기값이 있으면 data영역에 저장

code영역:프로그램 실행할떄 프로그램 코드가 저장되는 영역으로 텍스트영역 명령어등이 저장되고 cpu가 가져가서 하나씩처리하게됨