티스토리 뷰
3. 정적 메모리 할당 & 동적 메모리 할당
1. 정적 메모리 할당 (Static Memory Allocation)
컴파일 시에 메모리 할당 받고, 프로그램 종료 시 해제한다.
ex) int a[10]= 0;
2. 동적 메모리 할당(Dynamic Memory Allocation)
프로그래미러가 힙 영역에 메모리를 할당하는 것.
런타임 시(프로그램 실행 중)에 메모리를 할당 받고, 때 해제할 수 있다.
오버플로우(overflow)를 방지하고, 메모리 낭비를 방지한다.
ex) malloc, free 함수
3. Malloc
메모리를 동적으로 할당하는 것만이 목적으로 초기값 지정은 안 된다.
기본적으로 사이즈는 매개변수로 return 타입은 void로, sizeof와 캐스트 연산자의 도움을 받아야 쉬운 코딩이 가능하다.
realloc이라는 함수로 재할당이 가능하다.
4. Free
malloc으로 메모리 할당 후, 해제할 때 쓰는 함수.
메모리 할당 후, 메모리를 해제하지 않으면 할당받은 메모리는 사용이 끝났음에도 컴퓨터가 종료되기 전까지 해당 메모리를 차지한다.
결국 메모리를 할당만 하고 해제하지 않으면 언젠가는 메모리 부족 현상이 발생하게 된다.
그러므로 동적 할당 후, 더 이상 사용할 필요가 없다면 꼭 free 함수로 메모리를 해제해야 한다.
ex)
void * malloc(size_t size); // size 바이트와 메모리를 힙에서 할당하여 반환 (기본)
void * calloc(size_t num, size_t size); // (num * size) 바이트의 메모리를 힙에서 할당하고 포인터값을 반환
void * realloc(void * ptr, size_t size); // ptr이 가리키는 메모리를 size 바이트만큼 힙에서 재할당하여 반환
void free(void *ptr); // ptr이 가리키는 메모리를 해제
'SW > C' 카테고리의 다른 글
C_6. 재귀함수 (0) | 2020.01.05 |
---|---|
C_5. 포인터 (0) | 2020.01.04 |
C_4. 오버플로우 & 언더플로우 (0) | 2020.01.04 |
C_2. 정적 라이브러리 & 동적 라이브러리 (0) | 2020.01.04 |
C_1. 공간 복잡도 & 시간 복잡도 (0) | 2020.01.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 독서
- 초보자를 위한 C# 200제
- 프로그램
- 오버플로우
- 뇌를 자극하는 C# 5.0 프로그래밍
- 유니티 기초
- 프로그래밍
- 메서드
- 영화
- 앨런 튜링
- 기계적 추론
- 컴퓨터의 시초
- 서울대
- 나눗셈
- 두 수 입력
- 컴퓨터과학이 여는 세계
- 컴퓨터과학
- 동적
- 계산기
- dynamic
- 초보
- c
- 에니그마
- 기본개념
- 튜링
- c#
- 수리 명제 자동판결 문제
- 비전공자
- 정수
- 이광근
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함