IT 관련자료/C++
스택과 힙
elkein
2022. 2. 21. 20:01
스택(stack) 메모리에 정보를 쌓아놓고 가장 나중에 호출된 값부터 하나씩 메모리에서 빠져나가는 방식 (FIFO)
매우 빠른 액세스(제일 큰 장점)
변수를 명시 적으로 할당 해제 할 필요가 없다.
공간은 CPU에 의해 효율적으로 관리되고 메모리는 단편화되지 않다.
지역 변수 만
스택 크기 제한 (OS에 따라 다름), 메모리 크기가 작음, int array[100000000000] 이런거 하면 stack overflow생김
변수의 크기를 조정할 수 없다
힙(heap)
변수는 전역 적으로 액세스 가능
메모리 크기 제한 없음
(상대적으로) 느린 액세스
효율적인 공간 사용을 보장하지 못하면 메모리 블록이 할당 된 후 시간이 지남에 따라 메모리가 조각화되어 해제 될 수 있음
메모리를 관리해야함 (변수를 할당하고 해제하는 책임이 있습니다) delete 안해주면 포인터(주소)는 사라졌는데 메모리 공간만 차지하고 있는 경우가 발생할 수 있음(메모리누수)
메모리가 어디에 위치하는지,들어올지 찾기가 힘들다.
변수는 C언어 realloc() or 자바 new