내가 아는 한, Linux 스택 크기는 8MB로 제한되어 있지만 64비트 시스템에서는 예를 들어 4GB로 크게 늘릴 수 없는 이유가 없습니다. 이를 통해 프로그래머는 본질적으로 스택에 큰 값을 저장하거나 반복 대신 재귀 알고리즘을 사용하는 것에 대해 걱정할 필요가 없습니다.
또한 스택 할당이 힙 할당보다 훨씬 빠르기 때문에 더 빨라야 합니다. 우리는 스택에 할당된 데이터 구조의 완전히 새로운 클래스를 볼 수 있습니다. std::stack_vector<T>
스택에 할당되었다고 상상해보세요.
내가 보지 못하는 단점이 있나요? 아니면 아무도 변화를 일으킬 만큼 관심을 두지 않는 걸까요?
답변1
처음에는 가상 메모리를 절약하기 위해 스택 크기를 제한할 수 있지만 추가 이점은 무한 재귀를 포착한다는 것입니다. 실제로 깊은 재귀가 필요한 알고리즘은 흔하지 않으므로 큰 스택을 사용하면 버그가 될 가능성이 더 높습니다. 64비트 아키텍처로 전환해도 이러한 상황은 줄어들지 않습니다.
일부 데이터 유형이 더 크기 때문에 알고리즘은 64비트 모드에서 더 많은 스택 공간을 사용할 수 있지만 스택 크기 제한이 문제가 될 만큼 많지는 않을 것입니다.
실제로 이러한 제한은 대규모 배열이 스택에 할당되는 것을 방지하므로 더 효율적일 수 있습니다. 하지만 위의 무한 재귀 검사를 잃을 만큼 이 문제를 해결하는 것이 중요합니까?