Rylah's Study & Daily Life
Modern C++ : 01. Memory Structure - Stack Memory 본문
#include <iostream>
void foo(int arg)
{
int a;
int b;
}
void bar()
{
Cat cat;
Dog dog;
}
int main() {
int a;
double b;
foo(10);
bar();
return 0;
}
1. main 함수가 StackFrame에 올라간다.
2. foo 함수가 StackFrame에 들어간다.
foo가 종료될때 Return Address를 통해 어디로 가야할지 정하고 foo로 할당된 StackFrame 메모리를 해제한다.
#include <iostream>
class Cat
{
public:
Cat()
{
m_age = 1;
};
~Cat();
void addAge(int arg)
{
m_age += arg;
}
private:
int m_age;
};
int main() {
Cat cat;
cat.addAge(10);
return 0;
}
1. main 함수 실행
2. Cat cat 개체 생성으로 인한 생성자 호출 cat.age = 1
3. cat::Addage() 멤버 함수 호출 return address를 제일 위에 가지며 arg로 넘겨받은 인자와 가장 아래에 객체 자신을 가리키는 this 포인터 주소를 가지는 구조를 갖는다.
4. addAge(10)이 끝난 이후 값이 변경되었고 그 뒤에 실행되는 함수가 없으니 return으로 가기 전에 소멸자 ~Cat() 한번 메모리 위에 얹어져서 개체 소멸을 진행한다.
5. 프로그램이 종료된다.
StackFrame 함수 단위로 쌓이고 해제되고 반복되는 것이 C++ 프로그램이다.
출처 : https://youtu.be/Z21YL3Fnba0
'Study > C++' 카테고리의 다른 글
Modern C++ : 02. Memory Structure - Heap Memory (2) (0) | 2022.02.03 |
---|---|
Modern C++ : 02. Memory Structure - Heap Memory (0) | 2022.02.03 |
Modern C++ : 01. Memory Structure - Variables Types2 (변수 타입 in Memory) (0) | 2022.02.03 |
Modern C++ : 01. Memory Structure - Variables Types1 (변수 타입 in Memory) (0) | 2022.02.03 |
Modern C++ : 01. Memory Structure - Variables in Memory (0) | 2022.02.03 |