목차
[C Programming]지역변수와 스택메모리
C 언어에서 "stack"은 프로그램 실행 중에 사용되는 메모리 영역 중 하나를 가리키는 용어입니다. Stack은 주로 함수 호출과 관련된 데이터를 저장하는 데 사용되며, 지역 변수, 함수의 매개변수, 반환 주소 등을 저장하는 데에도 활용됩니다.
Stack은 RAM(Random Access Memory)에 속하는 메모리 영역입니다. RAM은 컴퓨터가 프로그램 및 데이터를 실시간으로 읽고 쓸 수 있는 주 메모리로, CPU가 직접 액세스할 수 있는 공간입니다. Stack은 RAM의 일부로, 주로 스택 포인터라고 불리는 특정 레지스터를 사용하여 메모리 상에서 스택의 현재 위치를 추적합니다.
반면, 캐시 메모리(cache memory)는 CPU와 주 메모리(RAM) 사이에서 데이터를 임시로 저장하고 빠르게 액세스할 수 있는 고속 메모리입니다. 캐시 메모리는 주로 CPU의 성능을 향상시키기 위해 사용되며, 스택(stack)과는 다른 개념입니다.
요약하자면, C 언어에서의 "stack"은 프로그램 실행 중에 사용되는 메모리 영역으로, RAM에 위치한 스택을 가리키는 용어입니다. 캐시 메모리는 CPU와 주 메모리 사이에서 데이터를 임시로 저장하는 고속 메모리입니다.
[C Programming]지역변수와 스택메모리 예제 풀이
앞서 소개한 것과 같이 스택에서는 지역 변수를 저장합니다. 지역 변수는 { } 내에서 선언된 변수로 { } 밖에서 다시 호출 시 동작이 되지 않습니다.
그림1은 해당 내용을 쉽게 설명해줍니다.
var a의 경우 {}밖에서 선언되어서 스택에 계속 존재합니다. 다음으로 var b가 선언되고 순차적으로 변수들이 선언됩니다. 마치 접시가 쌓이는 것처럼 { }안에 변수가 들어갈 경우 PUSH 형태로 변수를 stack에 넣어주고 { }를 벗어난 변수들은 POP의 형태로 Stack에서 빠져나가서 더 이상 사용을 할 수 없게 됩니다.
스택의 장점은 지역 변수를 그때 그때 상황에 맞춰 사용하고 버림으로서 메모리를 절약할 수 있게 해줍니다.
'C언어 C++ Programming' 카테고리의 다른 글
[C언어] 라이브러리 만들기, 읽기(dll, lib, 외부 코드, library import, 추가) (0) | 2023.07.14 |
---|---|
[C언어] 텍스트 파일 읽기, 예제 풀이로 이해하기(Text file, Read) (0) | 2023.07.13 |
CPU 레지스터와 캐시, 종류 및 동작 방법(Register, Cache) (0) | 2023.07.11 |
[C++언어]예외 처리 방법 (try, catch, throw) (0) | 2022.01.07 |
[C++언어] 원하는 경로에 파일 읽고 쓰기 (Path, File Write/Read) (0) | 2022.01.06 |