방금 직장에서 스택이 부족했고 데이터베이스 였고 일부 스레드를 실행 중이었습니다. 기본적으로 이전 개발자가 스택에 큰 배열을 던졌고 스택은 어쨌든 낮았습니다. 이 소프트웨어는 Microsoft Visual Studio 2015를 사용하여 컴파일되었습니다.
쓰레드는 스택이 부족했지만 조용히 실패하고 계속해서 스택에있는 데이터의 내용에 액세스 할 때만 스택 오버플로가 발생했습니다.
내가 줄 수있는 가장 좋은 조언은 스택에서 배열을 선언하지 않는 것입니다. 특히 복잡한 애플리케이션, 특히 스레드에서 대신 힙을 사용하십시오. 그것이 거기에있는 것입니다;)
또한 스택을 선언 할 때 즉시 실패하지 않고 액세스 할 때만 실패 할 수 있음을 명심하십시오. 내 생각 엔 컴파일러가 "낙관적으로"윈도우 아래에서 스택을 선언한다는 것입니다. 즉, 스택이 선언되었고 스택을 사용할 때까지 충분히 크기가 조정되었다고 가정하고 스택이 거기에 없다는 것을 알게됩니다.
운영 체제마다 스택 선언 정책이 다를 수 있습니다. 이 정책이 무엇인지 아는 경우 의견을 남겨주세요.