Complie Time에 size가 정해진다.
Run Time에 size가 정해진다.
종류 | Static Array | Dynamic Array |
---|---|---|
Allocation Time | stack에서 메모리 할당이 일어나기 때문에 dynamic Array보다 빠르다. | Static array보다는 느리다. |
메모리 | Stack | Heap |
종류 | C-style | Mordern Way(std) |
---|---|---|
Static Array | int a[5]; | std::array<int, 5> a; |
Dynamic Array | int* ap = new int[5]; delete[] ap | std::vector< int > a(5); |
C-style식으로 dynamic array를 정의할 경우에
항상 delete[] ap; 이런식으로 delete키워드를 꼭 넣어줄 것을 배웠다.
=> Memory Leak이 발생하기 때문에 항상 넣어주어야함. (동적으로 메모리 빌려다 썻으니까)
반면에 Morder Way식으로 dynamic Array를 사용할 경우
메모리 해제는 알아서 해주기 때문에 C-style처럼 메모리 해제 하는 부분을 신경을 안 써 주어도 된다는 장점이 있다.
size가 작고 complie time에 size를 알 수 있는 경우에 사용하면 좋다.
Stack에 할당 될 것이기 때문에 Allocation Speed가 Dynamic Array보다 빠르기 때문에
size가 작다라는 것의 기준은 1~2MB사이 이면된다.
하지만 가장 큰 이점은,
Allocation, DeAllocation Time이 '0'이다.
그 이유는 Stack에 들어있기 때문이다.
array의 max size만 알 고 있어도 std::array를 사용하는 것을 추천한다.