윈도우는 메인 스레드의 최대 스택 크기가 빌드할 때 지정되어서 실행할 때 조금씩 스택 크기가 증가되고
리눅스는 그냥 조금씩 증가함.
굳이 굳이 따지면 런타임에 증가함
C++(rustisbetterthancpp)2022-03-12 18:18
답글
리눅스도 2MB의 스택 제한이 기본값 아닌가? 컴파일할 때 플래그로 변경하고
익명(61.84)2022-03-12 18:37
컴파일 타임이 공통이고 리눅스는 스택 메모리를 변경할 수 있는 api를 제공해줌
익명(223.38)2022-03-12 19:30
답글
또 다른 관점으로, 윈도우의 스택 메모리 할당과정을 보면 미리 정해진 양을 reserve상태로 설정하고 필요에 의하여 commit을 해서 가져오니까 런타임에 동적으로 가져오는 것도 맥락에 따라 맞는말
익명(223.38)2022-03-12 19:31
답글
sbrk?
익명(14.38)2022-03-12 21:53
스택 자체는 컴파일 타임에 deterministic한데 메모리 할당은 런타임에 하는거 함수 프롤로그 보면 x86의 경우 esp를 감소시키는 명령어가 있는데 이 감소된 만큼 스택이 할당되는거임 이 명령어 자체는 컴파일러가 만든거라 크기는 컴파일타임에 정해지지만 실제 할당은 런타임에 일어나는거 그래서 재귀 잘못짜면 컴파일은 되도 런타임에 죽지 - dc App
윈도우는 메인 스레드의 최대 스택 크기가 빌드할 때 지정되어서 실행할 때 조금씩 스택 크기가 증가되고 리눅스는 그냥 조금씩 증가함. 굳이 굳이 따지면 런타임에 증가함
리눅스도 2MB의 스택 제한이 기본값 아닌가? 컴파일할 때 플래그로 변경하고
컴파일 타임이 공통이고 리눅스는 스택 메모리를 변경할 수 있는 api를 제공해줌
또 다른 관점으로, 윈도우의 스택 메모리 할당과정을 보면 미리 정해진 양을 reserve상태로 설정하고 필요에 의하여 commit을 해서 가져오니까 런타임에 동적으로 가져오는 것도 맥락에 따라 맞는말
sbrk?
스택 자체는 컴파일 타임에 deterministic한데 메모리 할당은 런타임에 하는거 함수 프롤로그 보면 x86의 경우 esp를 감소시키는 명령어가 있는데 이 감소된 만큼 스택이 할당되는거임 이 명령어 자체는 컴파일러가 만든거라 크기는 컴파일타임에 정해지지만 실제 할당은 런타임에 일어나는거 그래서 재귀 잘못짜면 컴파일은 되도 런타임에 죽지 - dc App