티스토리 뷰

안녕하세요 ! 우디입니다.🚀

오늘은 C언어의 메모리 구조에 대해서 알아봅시다 !

 

메모리에는 많은 정보들이 저장됩니다.

프로그래밍 할 때 메모리는 크게 데이터 영역, 스택 , , 코드 영역으로 나눠 사용합니다.

 


 

데이터 영역

정적 변수와 전역 변수가 저장됩니다.

이 영역에 저장된 데이터는 프로그램이 종료될 때 까지 그대로 유지됩니다. ( 정적 , 전역 변수는 프로그램 전체에서 사용되기 때문이라고 봐도 되겠죵 ? )

 

스택

지역변수, 파라미터, 리턴 값이 저장됩니다.

LIFO ( Last In First Out )방식으로 메모리를 사용합니다.

정적할당 : 정적할당된 메모리는 스택에 쌓임 .

" int x = 10 (정적할당)" 이라고 선언 후 코드를 짜다 " x = 0 " 과 같이 " x값 "을 변경했을 때, 마지막에 들어간 ( Last In ) 0 을 반환 ( First Out ) 하게 됩니다.

 

데이터 영역과 스택 영역은 컴파일 하는 과정에서 메모리를 할당합니다.

 

동적으로 할당된 데이터가 저장됩니다.

동적 메모리는 메모리의 크기를 예측할 수 없어 프로그램이 실행되는 도중에 메모리를 할당합니다.

할당된 메모리는 해제를 하지 않을 경우 프로그램이 종료될 때 까지 유지되기 때문에 반드시 해제시켜 줘야 합니다. 그러지 않으면 메모리 누수로 인해 리소스가 낭비됩니다 !!! 🌟🌟🌟

동적 할당 : 동적할당된 메모리는 힙에 쌓임 .

int *x ; ( 정적할당 , 스택에 쌓임 )

x = (int *)malloc(sizeof(int)); ( 동적할당 , 힙에 쌓임)

➥ x 포인터는 int 크기를 가지는 메모리를 가르키며 정수형을 마음껏 담을 수 있다 .

 

코드 영역

기계어로 번역된 코드가 저장됩니다.

 

'Programming > C , C++' 카테고리의 다른 글

구조체 포인터 매개변수  (0) 2020.10.12
[ C ] struct를 이용한 구조체  (0) 2020.10.12
[ C ] typedef를 이용한 구조체  (0) 2020.10.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 29 30 31
글 보관함