동적할당과 메모리구조
2019. 4. 16. 23:01ㆍLayer7
1. 메모리의 구조 :
1. code 영역
- 코드 자체를 구성하는 메모리 영역.
- 프로그램의 명령이 위치하는 곳.
2. data 영역
- 전역변수, 정적변수, 배열, 구조체 등이 저장된다.
3. stack 영역
- 지역변수 등이 저장된다.
4. heap 영역
- 동적할당 변수 등이 저장된다
2. 동적할당
메모리의 크기가 하드 코딩되어 있지 않은 것을 말한다. 원하는 상황에 원하는 크기만큼 메모리가 할당되므로 경제적이지만 더이상 사용하지 않을때 명시적으로 메모리를 해제해 주어야 한다는 단점도 있다.
malloc : 바이트의 메모리를 힙에서 할당하여 반환
calloc : 바이트의 메모리를 힙에서 할당하고 포인터값을 반환
realloc : 가리키는 메모리를 바이트만큼 힙에서 재할당하여 반환
free : 메모리해제
3. 댕글링포인터
free로 메모리 해제를 했지만 포인터가 여전히 해제된 메모리 영역을 가리키고 있다면 이러한 포인터를 댕글링 포인터라고 한다. 댕글링 포인터의 사용은 메모리 접근시 예측 불가능한 동작을 보이고 메모리 접근 불가시 Segmentation fault, 잠재적인 보안 위헙이 된다. 메모리를 free하면 포인터에 직접 NULL값을 넣어서 댕글링 포인터를 없애자.
'Layer7' 카테고리의 다른 글
리눅스 보고서 (0) | 2019.05.26 |
---|---|
개인프로젝트 - Super Mario Bros. (4) | 2019.05.16 |
2019-04-08 과제 (정사각형 숫자 대각선 만들기) (0) | 2019.04.09 |
2019-04-08 과제 (달팽이 직사각형 만들기) (0) | 2019.04.09 |
2019-04-08 과제 (달팽이 정사각형 만들기) (0) | 2019.04.09 |