2010-05-10 3 views
0

나는 scons와 함께 일하고 있는데 더 큰 스택 크기가 필요한 프로그램을 컴파일하려고하는데 스택 크기를 늘리는 방법을 모른다. 이것은 solaris 시스템에 있으며 우리는 프로젝트를 컴파일하기 위해 scons를 사용합니다.Solaris에서 scons로 빌드 된 실행 파일의 스택 크기를 늘리려면 어떻게해야합니까?

누구든지이 작업을 수행하는 방법을 알고 있습니까?

+0

도움 주셔서 감사합니다. 재귀 적으로 매우 큰 배열을 반복하는 함수를 다시 작성했는데 스택 오버플로의 원인이었습니다. 그래서 문제가 해결되었습니다! –

답변

0

프로그램을 실행하기 전에 쉘 (ksh 예제)에서 ulimit -s <size in kbytes>을 사용할 수 있습니다. 변경하려면 승격 된 권한이 필요할 수 있습니다.

프로그래밍 방식으로 setrlimit을 사용할 수도 있지만 설명서 페이지에서 현재 실행중인 프로세스를 조정하지 않으므로 필요에 도움이되지 않습니다.

또한 프로그램이 더 큰 스택 크기를 필요로하는지 고려하십시오. 좀 더 스택 친화적 인 디자인으로 바꿀 수있는 방법이 있습니까? 솔라리스의 디폴트는 10M 인 것으로 보입니다. 이것은 꽤 큰 스택입니다.

+0

예를 들어, 'new'를 사용하여 변수 할당을 동적 할당으로 이동하십시오. 대부분의 플랫폼은 로컬 메모리 (예 : 스택)보다 동적 메모리에 더 많은 메모리를 가지고 있습니다. 또한 재귀 호출 및 함수 호출 깊이를 확인하십시오. 매개 변수 목록보다는 구조별로 많은 변수를 전달하면 스택 공간을 절약 할 수 있습니다. –

+0

반면에 스택 할당은 힙 할당보다 빠릅니다. 따라서 많은 객체/호출이 필요하고 속도를 잃고 싶지 않다면 스택 할당은 공정한 것으로 보입니다. (아, 우리가 Go : x와 같은 스택 크기를 무제한으로 가진다면) –

+0

세 번째로, 많은 양의 객체를 사용한다면, 아마도 매우 작을 것이고 간단한 작은 객체 할당자가 스택 주위에 좋은 방법 일 것입니다 제한 사항. –

관련 문제