C 메모리는?
# 물리적인 메모리 영역에 source code 가 load 되고 프로그램에서 사용하는 변수들과 메모리 공간을 할당
> 코드 영역 : 실행 프로그램 소스 코드가 저장되는 공간
- 실행 시점에 결정
> 데이터 영역 : 전역/정적 변수들이 저장되는 공간
- 컴파일 시점에 결정
> 스택 영역 : 지역/매개 변수들이 저장되는 공간
- 컴파일 시점에 결정
> 힙 영역 : User 가 직접 관리 하는 공간 ( 생성/삭제 )
- 실행 시점에 결정
# 메모리 할당1
> User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생
> malloc 명령어를 이용해서 할당 받고 free 명령어를 이용해서 해제
> byte 단위로 전체 크기를 설정
> return 값은 첫번째 주소값 ( pointer )
# 메모리 할당2
> User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생
> calloc 명령어를 이용해서 할당 받고 free 명령어를 이용해서 해제
> 두개의 파라미터를 이용해서 전체 크기를 설정 ( block count, byte of block )
> return 값은 첫번째 주소값 ( pointer )
# 메모리 할당3
> User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생
> realloc 명령어를 이용해서 할당 받고 free 명령어를 이용해서 해제
> 두개의 파라미터를 이용해서 전체 크기를 설정 ( pointer of memory, total size )
> return 값은 첫번째 주소값 ( pointer )
> 할당 받은 메모리 공간을 재 할당 요청, 할당 받지 않은 상태(NULL)로 재 할당하면 malloc 과 동일
# 오버플로우 ( overflow )
> 더 이상의 여유 공간이 없거나 접근 가능한 공간을 벗어난 경우