Stack
- addresse가 낮아지는 방향으로 저장한다.
- Complie에 의해서 allocate되고 deallocate된다.
- 함수 내에서 사용하는 local variables에 접근할 때 사용한다.
- 빠른 속도로 처리되며, 메모리 내부에 작은 빈공간이 생기지 않아 효율적이게 사용한다.
Heap
- 메모리를 동적으로 할당한다. 실행시간에 메모리의 크기나 필요성이 결정된다.
- 사용자(programmer)에 의해 allocate되고 deallocate된다.
- Data들은 주로 Pointer를 통해 접근된다.
- 느린 속도로 처리되며, 메모리 내부에 틈이 생길 수있어 비효율적이다.
Dynamic Memory Allocation in C
#include <stdlib.h>
int *ptr = malloc(sizeof(int));
malloc을 사용하기 위해서 <stdlib.h> 헤더파일을 가져와야한다.
- Parameter: memory size(bytes)
- 연속적인 공간을 할당해야한다.
- Return: 할당된 공간을 가리키고 있는 Pointer 또는 NULL값
free(ptr);
메모리가 누수되는 것을 막기 위해 할당한 메모리를 사용한 후 해제해야한다.
- Parameter: memory block의 주소
'Computing' 카테고리의 다른 글
[C++] C++ Standard Library part2. File I/O streams / Strings / Containers (2) | 2025.03.19 |
---|---|
[빅데이터 및 지식관리시스템] View에 대해 알아보기 (1) | 2025.03.18 |
[빅데이터 및 지식관리시스템] Relational Data Model/Database 알아보기 (0) | 2025.03.15 |
[빅데이터 및 지식관리시스템] DBMS와 level of abstraction에 대해 알아보기 (1) | 2025.03.14 |
[C++] C++ Standard Library part1. I/O streams (0) | 2025.03.12 |