Computing

[C] Memory model(Stack vs Heap)

ysk1m 2025. 3. 17. 13:49

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의 주소