2008-10-01 71 views
9

GCC에서 컴파일/링크 할 때 Windows 응용 프로그램의 스택 크기를 늘릴 수 있습니까?Windows (GCC)에서 스택 크기 늘리기

+0

스택 크기를 늘리는 것은 무엇을 의미합니까? 스택 프레임은 스택에있는 함수가 차지하는 부분입니다. 스택은 운영 체제에 의해 올바르게 결정됩니까? 'editbin'이 어떻게 도움이됩니까? 나는 혼란스러워! – claws

답변

6

연결 후 editbin을 실행할 수 있습니다.

+0

필자는 분명히 할 수있었습니다 - 필자가 필연적으로해야 할 것으로 보입니다 -하지만 나는 링크 타임에 그것을 할 방법을 찾고있었습니다. 그래도 고마워. – Landon

0

스레드를 만들 때 dwStackSize paremater를 사용하지만 주 스레드의 크기를 변경하는 방법을 잘 모르겠습니다. 이것은 exe의 헤더에 있음을 나타내므로 컴파일러/링커의 옵션 일 수 있습니다. 헤더의 관련 부분을 찾아 직접 변경해야합니다.

http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx

17

IIRC는 GCC에서 당신은 --stack, LD에 [바이트] 매개 변수를 제공 할 수 있습니다.

예.

gcc -Wl,--stack,16777216 -o file.exe file.c 

16MiB의 스택을 가지려면 기본 크기가 8MiB라고 생각합니다.

+0

이것은 내가 원래 찾고 있었던 것이다. 불행히도, 나는 Windows에서 이걸 가진 행운이 없었어요. 너? – Landon

+1

+1 이것은 실제로 gcc 4.5.2에서 시도해도 작동합니다. 이 스위치가 없으면 컴파일 된 프로그램은 정적 배열 크기 ~ 500k로 segfaulting을 시작합니다. 이 스위치를 적용한 후에는 문제없이 최대 3 백만 개의 요소를 늘릴 수있었습니다. – greatwolf

2

Windows에는 두 가지 스택 크기가 있습니다. 처음에 커밋 된 크기 및 총 예약 크기입니다. .def 파일에 STACKSIZE 문을 둘 다 설정할 수 있습니다.