• 검색 결과가 없습니다.

◉ 1. 동적메모리할당 (1)

N/A
N/A
Protected

Academic year: 2022

Share "◉ 1. 동적메모리할당 (1)"

Copied!
12
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

현승일 교수

14주차 2강. 동적 메모리 할당

(2)

학습내용

학습목표

1. 동적 메모리 할당

2. 동적 메모리 할당 함수

1. 동적 메모리 할당에 대해 설명할 수 있다.

2. 동적 메모리 할당 함수에 대해 설명할 수 있다.

(3)

동적 메모리 할당

1. 동적 메모리 할당(1)

등장배경

- 전역변수와 지역변수로 해결되지 않는 상황의 해결책

“함수가 매번 호출될 때마다 새롭게 할당되고 또 함수를 빠져나가도 유지가 되는 유형의 변수” 가 필요

(힙 영역 활용)

- 배열의 단점 보완 : 배열은 가장 클 것으로 예상되는 크기로 선언됨 (메모리 낭비)

→ 동적 메모리 할당으로 프로그램 실행 시 필요할 때마다 메모리를 할당

(4)

동적 메모리 활용

1. 동적 메모리 할당(2)

컴파일 과정이 아닌 런타임에서 이루어짐

포인터 변수를 통해서만 접근 가능

힙(Heap)에 할당됨. <stdlib.h> 선언하여야

연결리스트와 큐, 스택, 이진 트리 등 자료구조를 체계적이고, 논리적으로 구현하는 알고리즘에서 일반적으로 사용

‘프로그래머가 관리하는 메모리 공간’

→ 프로그래머가 malloc() 할당한 메모리는 명시적으로 free() 함수로 해제해 주지 않으면 계속 남아 있음

(5)

지역변수 및 전역변수 활용

1. 동적 메모리 할당(3)

(6)

malloc 함수

2. 동적 메모리 할당 함수(1)

void *malloc(size_t size);

malloc () 함수의 인수로 크기(byte 단위)를 넘겨주면 운영체제에서는 비어있는 영역을 할당해 그 시작주소를 반환해 줌

malloc() 함수가 메모리를 할당 받을 수 없는 상태라면 NULL 값을 반환함

메모리 할당은 void 형태로 크기만 지정하고, 사용 시에 형 지정

(7)

2. 동적 메모리 할당 함수(2)

malloc() 함수 활용

(8)

calloc() 함수

2. 동적 메모리 할당 함수(3)

void *calloc(size_t num_elements, size_t elements_size);

num_elements * elements_size 만큼의 크기를 할당하면서, 할당된 공간을 자동으로 0으로 초기화

이런 초기화가 편리하기도 하지만 메모리를 사용하기 전에 미리 할당 받은 메모리에 항상 값을 저장하는 프로그램이라면 이런 과정이 오히려 시간낭비가 될 수 있음

(9)

realloc() 함수

2. 동적 메모리 할당 함수(4)

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

이미 할당되어 있는 영역을 다시 size 만큼 재할당하여 새로운 영역의 시작주소를 반환함. 기존데이터를 보장해줌

(10)

free() 함수

2. 동적 메모리 할당 함수(5)

void *free(void *ptr);

free() 함수의 인수는 malloc(), calloc(), realloc() 호출에서 반환 받는 값, 즉 메모리 주소이어야 함

이 함수는 할당 받은 영역을 해제하고, 이렇게 해제된 기억 장소는 다음의 동적 할당 요청에 다시 할당해 사용될 수 있음

할당된 공간의 일부만을 해제할 수 없음

(11)

정리하기

1. 동적 메모리 할당

- 컴파일 과정이 아닌 런타임에서 이루어짐 - 포인터 변수를 통해서만 접근 가능

- 힙(Heap)에 할당됨. <stdlib.h> 선언하여야 함

2. 동적 메모리 할당 함수

void *malloc(size_t size);

void *calloc(size_t num_elements, size_t elements_size);

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

void *free(void *ptr);

(12)

다음시간에는…

에 대해 학습해 보겠습니다.

참고문헌

14주차. 동적 메모리 할당

3강. 동적 메모리 할당을 활용한 프로그래밍 실습

참조

관련 문서

달빅 가상 머신은 모든 자바 객체 할당을 위하여 반드시 바이오 닉 C 라이브러리의 동적 메모리 할당 함수를 사용한다.. 제안된 기 법은 이러한 사실에 착안하여 달빅 가상 머신이

기존의 컨텐츠 기반의 영상 리타겟팅 기법인 seam carving은 영상의 크기 조절 시 다이나믹 프로그래밍(Dynamic Programming) 기법을 사용하기 때문에 반복적인 누적

첫째로, 간섭 상태에 있는 부채널을 계속 간섭 상 태로 유지하여 간섭 부채널의 수를 최소로 발생시킴으로 서 간섭 지역에서 자유 부채널의 수를 항상 최대로 유지 하는

(그림 6) 플래시 메모리 영역 할당.. 둘째, 듀얼 포트 메모리와 인터럽트를 통해서 연 결되는 형태이다. 듀얼 포트로 연결된 공유 메모리를 통해서 제어 명령과 메시지를

논술형 평가에서는 이런 부분에 대한 어려움이 있습니다. 어떤 부분에서 감점이 되었는지 확인이 가능한 분석적 채점의 경우 일부 학생들은 결과를 납득하지 못하고 의문을 제기할

어떤 이유나 목적을 특별히 의식하지 않아도 쓰게 되는 이런 상황으로의 전환 이 일단 우리가 받아들여야 할 글쓰기의 환경 변화이다.23밑줄 강조:인용자 글쓰기의 목적과 동기에 대한 학습은 글쓰기 수업 초반부에서 빠트릴 수 없는 중요 부분이다... 과정이 필수적인 코스일

본 장에서는 모델의 양자화를 위해 32bit 연산을 2bit로 양자화하고 8bit 메모리에 저장하는 패킹 연 산과, 저장된 8bit 양자화 데이터를 순차적으로 접 근하며 입력