IT 관련자료/C++

스택과 힙

elkein 2022. 2. 21. 20:01

스택(stack)  메모리에 정보를 쌓아놓고 가장 나중에 호출된 값부터 하나씩 메모리에서 빠져나가는 방식 (FIFO)
매우 빠른 액세스(제일 큰 장점)

변수를 명시 적으로 할당 해제 할 필요가 없다.

공간은 CPU에 의해 효율적으로 관리되고 메모리는 단편화되지 않다.

지역 변수 만

스택 크기 제한 (OS에 따라 다름), 메모리 크기가 작음, int array[100000000000] 이런거 하면 stack overflow생김

변수의 크기를 조정할 수 없다

 



힙(heap)
변수는 전역 적으로 액세스 가능

메모리 크기 제한 없음

(상대적으로) 느린 액세스

효율적인 공간 사용을 보장하지 못하면 메모리 블록이 할당 된 후 시간이 지남에 따라 메모리가 조각화되어 해제 될 수 있음

메모리를 관리해야함 (변수를 할당하고 해제하는 책임이 있습니다) delete 안해주면 포인터(주소)는 사라졌는데 메모리 공간만 차지하고 있는 경우가 발생할 수 있음(메모리누수)

메모리가 어디에 위치하는지,들어올지 찾기가 힘들다. 

변수는 C언어 realloc() or 자바 new