동적 메모리 할당, 정적 메모리 할당

동적 메모리 할당, 정적 메모리 할당.

안녕하세요.

오늘은 그냥 복습하면서 대충 적어본 내용입니다.

어차피 찾아보면 많은 내용들이 나와서 자세히는 쓰지는 않고 간단하게 작성할 생각입니다.

  • 정적 메모리 할당이란?
  • 간단한 정적 메모리 할당 코드.
  • 동적 메모리 할당이란?
  • 간단한 코드.

프로그래밍에서 메모리를 할당하는 방식은 크게 두 가지가 있습니다.

이번 글에서는 두가지 메모리 할당 방법에 대한 간단한 설명과 예시를 다룰 것입니다.

정적 메모리 할당이란?

프로그램이 실행될 때 이미 메모리의 크기가 결정되고 프로그램이 종료되면 운영체제가 알아서 회수함.

할당된 메모리는 스택에 위치하며 처음 결정된 크기보다 더 큰 입력이 들어오면 처리하지 못함.

변수, 배열선언이 정적 메모리 할당에 해당함.

정적 메모리 할당 코드.

흔히 사용하는 변수, 배열 선언.(하드코딩.)

#include<stdio.h>
int main(){
	int i=0;
	float j=0;
	int k[10]={0,};
	return 0;
}

동적 메모리 할당이란?

실행시간 동안 사용할 메모리 공간을 할당받으며 사용이 끝나면 반납해야함.

(사용자가 해제하기 전까지 메모리 공간 유지)

할당된 메모리는 힙 영역에 위치하며 상황에 따라 원하는 만큼의 메모리가 할당됨.(할당된 메모리도 크기 조절이 가능함.)

동적 메모리 할당이란?

동적 할당을 하기 위해서는 해당 라이브러리가 필요함.(c기준.)

#include<stdlib.h>

동적 메모리 할당 코드.

void *malloc(size_t size);
void *calloc(size_t num,size_t size);
void *realloc(void *ptr,size_t size);
void free(void *ptr);

malloc()-> size바이트만큼의 메모리를 힙에서 할당합니다.(초기화되지 않으며 할당 실패 시 NULL반환.)

calloc()->num개의 메모리를 할당.(0으로 초기화되며 할당 실패시 NULL반환.)

realloc()-> 할당된 메모리의 크기를 변경.

free()->할당된 메모리를 해제.(사용자가 해제하기 전까지 메모리 공간을 유지하므로 꼭 해제해야함.)

#include<stdio.h>
#include<stdlib.h>
#include <malloc.h>
int main(){
	/*이런식으로 사용함.*/
	int *i=(int *)malloc(sizeof(int)*70); 
	printf("i=%d\n",_msize(i));
	int *j=(int *)calloc(3,sizeof(int));
	printf("j=%d\n",_msize(j));
	i=realloc(i,sizeof(int)*10);
	printf("i=%d\n",_msize(i));
	free(i);
	free(j); 
	return 0;
}

위 코드 실행결과.

Designed by JB FACTORY