블로그 이미지
devtang
Instagram : @taebr0 devtaehyeong@gmail.com

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2021. 1. 11. 16:21 C++

시스템 메모리 구조는 위와 같이 나뉜다.

Code는 우리가 작성한 코드가 들어가있는 영역이다.

Data영역은 두가지로 나뉘는데 초기화가 되어있는 전역변수나 static 변수,

BSS는 0으로 초기화 되어있는 전역 변수나 static 변수

 

스택은 (LIFO : Last in First out) 구조로 위의 사진에서는 second()부터 순차적으로 할당해제가 된다고 보면 될 것 같다.

 

스택의 메모리가 감당할 수 없는 크기의 메모리를 할당하면 넘치게 되서 오류가 발생한다.

이를 방지하기 위해서는 heap영역에 접근할 수 있는 동적할당이 필요함

 

여기서 중요할점은 delete[] 한 후에 더사용을 해야한다면 반드시 포인터 변수를 다시 초기화하여 엉뚱한 값을 가리키지 않도록 해야한다.

 

delete를 하지 않으면 힙메모리영역에 사용하지도 않는 메모리를 계속 생성해놓을 수 있어서 메모리 누수(memory leak)가 발생할 수 있기때문에 동적할당 시에 반드시 해줘야한다.

'C++' 카테고리의 다른 글

[C++] 이중포인터와 동적 이차원 배열 생성 예제  (0) 2021.01.10
[C++] 포인터와 const  (0) 2021.01.10
[C++] 포인터의 기본  (0) 2021.01.10
posted by devtang