관리 메뉴

ComputerVision Jack

[C프로그래밍 Chapter19] 본문

Programming Language/C Programming

[C프로그래밍 Chapter19]

JackYoon 2020. 2. 12. 09:58
반응형

[메모리 구조]

프로그램 실행시, 메모리 공간이 운영체제에 의해서 준비된다.

이 메모리 공간에 변수가 선언되고 문자열이 선언된다.

 

메모리 구조

  • 코드영역
  • 데이터 영역
  • 힙 영역
  • 스택 영역

코드 영역(Code Area)

실행할 프로그램의 코드가 저장되는 메모리 공간

CPU는 코드 영역에 저장된 명령문을 하나씩 가져와서 실행한다.

 

데이터 영역(Data Area)

전역 변수와 static으로 선언되는 static변수가 할당된다.

프로그램 종료시까지 존재한다.

 

스택 영역(Stack Area)

지역 변수와 매개 변수가 할당된다. 함수 탈출시 소멸된다.

 

힙 영역(Heap Area)

프로그래머가 원하는 시점에 변수를 할당하고 소멸하도록 지원하는 영역

[메모리 동적 할당]

함수가 매번 호출될 떄마다 새롭게 할당되고 함수 탈출후에 유지가 되는 유형의 변수

생성과 소멸의 시기를 결정하는 유형의 변수는 mallocfree 이름의 함수를 통해서 힙 영역에 할당하고 소멸한다.

 

malloc 함수 / free 함수

메모리 공간을 할당하는 함수 / 메모리 공간 해제하는 함수

#include <stdlib.h>

void malloc(size_t size);

void free(void * ptr);

 

calloc함수

malloc과 다르게 메모리 공간의 할당을 위한 인자 전달 방식이 다르다.

#include <stdlib.h>

void * calloc(size_t elt_count, size_t elt_size);

첫번째 인자로 할당할 블록의 갯수 정보가 전달, 두번째 인자로 블록 하나당 바이트 크기의 정보가 전달

 

realloc 함수

한번 할당된 메모리 공간의 크기 조절

#include <stdlib.h>

void * realloc(void * ptr, size_t size);

첫번째 인자로 확장하고자 하는 힙영역 시작주소 전달, 두번째로 메모리의 전체 크기를 전달한다.

 

반응형

'Programming Language > C Programming' 카테고리의 다른 글

[C프로그래밍 Chapter20]  (0) 2020.02.17
[C프로그래밍 Chapter18]  (0) 2020.02.11
[C프로그래밍 Chapter17]  (0) 2020.02.10
[C프로그래밍 Chapter16]  (0) 2020.02.06
[C프로그래밍 Chapter15]  (0) 2020.02.05
Comments