'c언어 메모리 관리'에 해당되는 글 1건

  1. c언어 메모리 관리와 동적할당 malloc 함수와 fee함수

c언어 메모리 관리와 동적할당 malloc 함수와 fee함수

c언어 메모리 관리 입니다.

메모리는 프로그램이 실행되는 동안 저장되는 데이터 ram이라는 메모리 공간에 저장하는 것인데요

ram은 크게 코드 데이터 스택 힙 영역으로 나뉜답니다.

 

코드영역,데이터영역 힙영역 스택영역 이렇게

4가지로 이루어진 프로세스!

운영체제의 의해 할당된 메모리 공간이라고 할 수 있어요.

먼저 코드 영역부터 살펴볼께요!

실행할 프로그램의 코드가 저장되는 공간입니다

cpu는 코드 영역에 저장된 명령문을 하나씩 가져다가 실행하게 됩니다.

데이터 영역은 전역변수와 static변수가 할당되는 영역입니다.

프로그램 시작과 동시에 할당되어서 종료시까지 남아있는 특징의 변수가 저장되는 공간입니다.

힙영역 : 프로그래머가 원하는 시점에 메모리 공간에 할당 및 소멸을 하기 위한 공간입니다.

스택 영역은 지역변수와 매개변수가 할당되는 공간이라보시면 됩니다.

함수를 빠져나가면 소멸되는 변수를 저장하는 공간이라고 할 수 있죠.!

 

정적 할당과 동적 할당에 대해서 알아볼께요

먼저 정적할당이란?!

컴파일시에 할당될 메모리 크기가 결정 되어 있는 것입니다

스택 영역과 데이터 영역에 할당되는 메모리 이죠.

동적할당의 경우에는

실행 중에 메모리가 할당하는 것입니다.

동적 할당된 메모리는 힙영역에 할당된답니다.

 

c언어 메모리 관리 를 할떄 사용하는 함수로는

malloc과 free함수가 있습니다.

malloc함수는 전달인자의 크기만큼 메모리를 할당하고 할당된 메모리의 시작주소 리턴되는 주소는 void포인터 타입이어서  형변환해 사용을 합니다.

malloc함수의 리턴형이 void인 이유는 malloc함수는 인자로 숫자만 하나 전달받기 때문에

할당하는 메모리의 용도를 알지 못합니다. 그렇기 때문에 메모리의 포인터 형을

결정짓지 못하게 되는데요 때문에 형 변환의 과정을 거쳐서 할당된 메모리의 주소값을 저장합니다.

주로 메모리 절약을 위해 사용되는 함수 입니다.

free함수의 경우에는 주소가 가르키는 메모를 해제해줍니다

malloc과 함께 쓰입니다

malloc함수와 free함수는 stdlib.h 안에 선언되어있습니다.

#include <stdlib.h>를 하셔야 사용하실수 있는 함수입니다!