메모리 구조
코드 / 데이터 / 힙 / 스택 영역으로 구분
1. 코드 영역
코드가 저장되는 메모리 공간
2. 데이터 영역
전역변수와 statice으로 선언되는 static 변수가 할당
* 프로그램 종료 시까지 남음
3. 스택영역
지역변수와 매개변수가 할당
* 함수를 빠져나가면 소멸
4. 힙 영역
원하는 시점에 변수를 할당하고 소멸하도록 지원
프로그램의 실행 흐름
1. 전역변수 / static 변수가 데이터 영역에 할당 -> main함수 호출 -> 지역변수가 스택에 할당
2. main 내에서 함수가 호출 -> 함수의 매개변수 / 지역변수가 스택에 할당
3. 함수의 반환으로 함수호출 시 할당된 매개변수와 지역변수가 소멸
4. 프로그램 종료 -> 운영체제에 의해서 할당된 메모리 공간 전체를 반환 -> 전역변수 소멸
* 먼저 호출된 함수의 스택공간일수록 늦게 해제됨 == 쌓아올린 더미
메모리의 동적 할당 (힙 영역)
지역변수나 전역변수로 충분하지 않을때 사용
malloc 함수 |
void * ptr = (타입) malloc(size) |
할당된 공간이 쓰레기 값으로 채워짐33 |
calloc 함수 |
void * ptr = (타입) malloc(개수, size) |
할당된 메모리 공간의 모든 비트를 0으로 초기화 |
realloc 함수 |
void ( ptr = (타입) |
ptr이 가리키는 메모리의크기를 size 크기로 조절 |
malloc
성공 시 할당된 메모리의 주소 값 반환
할당된 공간이 쓰레기 값으로 채워짐
calloc
할당된 메모리 공간의 모든 비트를 0으로 초기화
realloc
성공 시 새로 할당된 메모리의 주소 값, 실패 시 NULL 반환
'언어 > C' 카테고리의 다른 글
[C] 파일의 분활과 헤더파일 (0) | 2019.01.11 |
---|---|
[C] 매크로와 선행처리기 (0) | 2019.01.10 |
[C] 파일 입출력 (0) | 2018.12.07 |
[C] 구조체 (0) | 2018.12.04 |
[C] 문자 & 문자열 관련 함수 (0) | 2018.11.15 |
댓글