728x90

 0. [c++] 시스템프로그래밍

 

 1. 풀이

 

프로그램 메모리 할당

메모리는 위와 같이 할당이 되게 된다.

heap 영역은 런타임에 크기가 결정되는 영역이다. 즉, 동적할당을 하는 경우 활용되는 공간이다.

Stack 영역은 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역이다. 이 영역은 함수를 호출하며 자동적으로 stack 영역에 함수 실행에 필요한 주소들이 push 된다. 함수가 종료되며 저장된 영역을 pop 하여 문제 없이 프로그램이 완료된다면 stack 영역에 데이터가 존재하지 않게 된다.

또한, BSS, DATA, CONST, rodata는 STATIC 영역으로 프로그램이 실행하면 정적으로 크기가 고정되는 공간이다. 더 생각해보면 main 함수 내부에서 int를 선언할 때, 변수를 int [n]과 같은 형태로 선언하게 되면 문제가 발생하는 것을 경험한 적이 있을 것이다.

이때, 문제가 발생했던 원인은 int는 STATIC으로 미리 공간이 결정되는 항목에 속하는 것이었다. 그래서 데이터 공간 할당이 결정되지 않은 n이라는 변수로 인해 오류가 발생하기 때문에 다음과 같은 결과를 보이게 되는 것이다.

 

2. 소스코드

 

 3. 참고

ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EB%A9%94%EB%AA%A8%EB%A6%AC_%ED%95%A0%EB%8B%B9

 

 

질문이나 지적 있으시면 댓글로 남겨주세요~

도움 되셨으면 하트 꾹!

+ Recent posts