LIFO
: Last in, First out
Stack Definition
typedef int ItemType;
class StackType{
private:
ItemType data[MAX_SIZE];
int top;
public:
StackType();
void push(Itemtype value);
Itemtype pop();
int size() const;
bool isFull() const;
bool isEmpty() const;
// const가 붙으면 멤버변수 수정 불가
}
Automatic Allocation
함수 호출 순서에 따라 Process Memory Map 의 Stack 부분에 stack 모양으로 쌓임
+) 전역 변수는 Data 부분에 들어감
Dynamic Allocation
local variable의 size는 compile time에 결정되어 있어야 함
-> new
instruction 이용
Process Memory Map 의 Heap 부분에 할당
함수가 끝난 후에도 동적 할당된 변수들은 살아 있음
→ delete (or free)
instruction 이용
→ 함수 끝난 후에 dynamically allocated memory를 가리키는 포인터가 없어지는 것을 memory leakage 라고 부름
Garbage 예방법
void make_array(){
int cnt = 0;
cin >> cnt;
int *temp_array;
temp_array = new int[cnt];
delete[] temp_array; // 방법1
// return temp_array -> 방법2
}
int main(){
make_array(); // 방법1
// int* pt_array = make_array() -> 방법2
}
Static Allocation