PLASLaboratory / ComputerProgramming3_CNU_2024

2024년 컴퓨터프로그래밍3 00분반, 01분반 컴퓨터프로그래밍3 질의응답을 위한 repository 입니다.
12 stars 1 forks source link

[00분반] 11주차 이론 관련해서 질문있습니다. #16

Open csh1668 opened 4 months ago

csh1668 commented 4 months ago

image 안녕하세요. 수업 내용에 따르면 일반적으로 컴퓨터 프로그램은 실행 시 메모리에 위와 같은 구조로 관리됩니다. 스택 메모리와 힙 메모리는 서로 마주보며 자라는 구조로 되어있습니다.

image 만약 제가 스택 영역에 일정 크기를 넘어가는 메모리를 할당한다면 실행 즉시 Segment fault 에러가 뜹니다. 이는 스택 영역의 크기가 기본적으로 1MB이기 때문에 그렇습니다.

image

그런데 힙 영역에 같은 크기의 메모리를 할당해도 문제가 없는 이유는 무엇인가요?

물론 힙 영역은 스택 영역처럼 크기 제한이 없지만, 스택 메모리나 프로그램 실행 코드 쪽으로 자라기 때문에 일정 이상(물론 컴퓨터 메모리 크기 이하로) 넘어가면, 스택 메모리나 코드 영역에 할당을 해버려서 예외가 발생하거나, 아예 할당에 실패해서 널 포인터를 반환하거나 해야하지 않을까요?

스크린샷 2024-06-17 092152 그럼에도 동적 할당으로는 컴퓨터 메모리에 여유가 있다면 얼마든지 할당할 수 있는 이유가 궁금합니다.

제 생각에는 힙 영역의 자라는 방향이 반대고, 메모리를 동적 할당할 때마다 상한을 지정해주는 방식이 더 직관적이고 나아보입니다.