함수 내 큰 배열 선언 오류

2019. 5. 15. 16:29알고리즘/암기

data 영역이 아닌 함수 내의 스택 영역에 약 백만 개의 int 배열을 선언할 때 오류가 발생한다

 

함수 내에서 선언되어 사용되는 배열의 경우 배열 자체가 스택 영역에 생성되고 함수가 호출될 때마다 해당 배열을 위한 메모리를 새로 생성하고 초기화하는 작업을 하기 때문에 배열의 크기가 큰 경우에는 다른 방법을 사용해야 한다. 이론적으로는 지역변수의 영역 크기는 제한되어있지 않지만 시스템에 따라 하드웨어적인 제한이나 스택 운용의 효율을 높이기 위해 스택의 크기를 제한하기도 한다. 그렇게 때문에 함수 내에서 선언되는 배열의 크기가 과도하게 큰 경우 프로그램이 강제 종료될 수 있다.

 

그렇기 때문에 배열의 크기가 조금이라도 큰 경우에는 힙 영역이나 data 영역을 사용하는 것이 올바르다

'알고리즘 > 암기' 카테고리의 다른 글

매개변수와 시간복잡도  (0) 2019.05.22
비트마스크와 재귀의 시간복잡도 차이  (0) 2019.05.22
파라메트릭 서치  (0) 2019.05.14
Disjoint-set  (0) 2019.05.14
구조체를 활용한 priority_queue 비교함수  (0) 2019.05.14