
프로그램이 CPU에 의해 실행된다는 것은 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당됨을 의미한다.
프로세스의 메모리는
Stack,Heap,Data,Code(Text)로 나뉜다.
프로세스 내에서 구역이 나뉜 이유는 최대한 데이터를 공유하여 메모리 사용양을 줄이기 위해서다.
LIFO(Last Input First Output) 형식의 자료구조이다.main() 이 가장먼저 스텍에 들어가고 func1() -> func2() -> func3() 순으로 스텍에 쌓인다.(정확히는 func1() 은 들어갓다 실행 후 빠져나온다.) #include <stdio.h>
int main(void){
printf("\n I");
func1();
print("C");
func2();
return 0;
}
void func1(void){ print("like"); }
void func2(void){
printf("program");
func3();
}
void func3(void){ printf("!!!"); }
new 키워드를 통해 Heap 영역에 할당이 된다.출처
[운영체제] 프로세스 주소 공간
Tech Interview
프로세스 주소 공간(Process Address Space)