inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

독하게 되새기는 C 프로그래밍

스택 메모리는 왜 아껴야 하는건가요?

해결된 질문

921

sete

작성한 질문수 18

0

기본적으로 힙과 스택이 어떤 식으로 사용되는지는 알고 있는데요,

다만 스택의 기본 최대 크기가 1MB라는 점이 잘 이해가 안됩니다..

아마 제가 실무를 경험해본 적이 없어서 공감을 못하는 듯한데

이 1MB라는 것이 기본값으로 쓰일 만큼 적절한 크기인가요?

제 생각엔 그렇게 널널한 크기는 아닌 듯한데.. 그렇게까지 아껴야 하는 이유가 뭘까 싶어서 질문드립니다

그냥 힙 영역을 최대한 많이 확보하기 위해서라고 생각하면 될까요?

c secure-coding kernel

답변 1

1

널널한 개발자

네, 크게 부족하지 않습니다. 스택이 메모리는 스레드마다 동일하게 부여됩니다. 싱글 스레딩 상황에서는 큰 문제가 없을지 모르지만 멀티스레딩 상황에서 불필요하게 스택 메모리를 높여버리면 모든 스레드가 스택을 크게 할당하게 되고 이는 스스로 생각하는 것처럼 힙영역 등 다른 용도 메모리 공간을 줄이는 원인이 됩니다. 결국 자원 운영 효율에 관한 문제로 이해하면 되겠습니다. 감사합니다.

0

sete

그렇군요..^^ 알고리즘 문제를 풀면서 스택 오버플로우를 종종 겪다보니 실무에서도 그러한지? 라는 생각을 하곤 했습니다 물론 실수가 원인이지만요~감사합니다^^

0

널널한 개발자

스택 오버의 가장 흔한 원인 중 하나는 재귀호출입니다. 노파심에 사족을 달아봅니다. 참고하시고 좋은 학습성과 거두시기 바랍니다. ^^

병행성 제어

0

46

2

질문이 있습니다(강의와 거의 상관이 없는)

0

75

2

컴파일러 서적 질문입니다

0

161

1

코드생성 및 최적화 질문입니다

0

159

1

Hex Editor를 이용한 다국어 번역 관련 질문입니다

0

210

2

큐의 배열을 넘겨도 정상작동합니다

0

157

2

캐너리비트에 관하여 질문

0

210

3

상수화된 문자열에 질문있습니다

0

171

1

함수 호출 매개변수 전달에 대한 질문 드립니다.

0

189

1

단항 증감 연산에 따른 다른 접근에 대한 질문있습니다.

0

209

2

함수호출 규약 종류에 따른 장단점 여부

0

227

2

정적라이브러리 링크 오류

0

225

1

const char *를 char*에 초기화할때의 컴파일 에러 처리 방식 문의

0

353

2

pszParam 수정이 왜 Hello World print에도 영향을 미치는지 이해가 잘 안됩니다.

0

251

2

비선형 자료구조

0

311

1

자료 구조 공부 후에

0

353

1

강의자료 관련

0

253

1

마지막에 말씀하신 부분 질문드립니다.

0

213

1

문자열 관련 질문 드립니다

0

290

1

라이브러리

0

272

1

부동소수점

0

389

1

왜 변수 주소 사이에 offset이 있는 건가요?

0

301

2

stack 쌓는 순서

0

506

1

함수호출이랑 쓰레드

0

410

1