일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 티스토리 전체글수표시
- 한글 가운뎃점
- 스팀 돈얼마나 썼는지보기
- 명언
- 티스토리전체글수
- 스팀 사용 금액
- Class1
- 어도비플래시삭제
- 티스토리사진
- 언리얼
- 자바메모
- 어도비플래시서비스종료
- 롤 현질얼마나 했는지보기
- 앤드류 테이트
- 게임 네트워킹
- 스팀에 돈 얼마나 썼지
- 가운뎃점 입력
- 도파 신경론
- 쿠르츠 게작트
- 롤 현질금액보기
- 티스토리사진한줄에 여러개
- 롤에 돈얼마나썼지
- 도선생님 신경론
- 백준
- 신경론
- 비주얼스튜디오 코드 글꼴
- c++
- 비주얼스튜디오 코드 폰트
- 자바스크립트 defer
- 티스토리 코드블록
- Today
- Total
Small Step
[C] C 언어 공부 정리 - 메모리, 동적 할당 본문
동적할당 부분을 정리해놓은 글이다.
배열의 크기를 정할때는 컴파일 시간에 확정이 되어 있어야 한다.
배열을 명확한 크기를 정해놓아야 한다.
그래서 대부분 배열을 충분히 크게 설정한다.
그러나 이러면 메모리가 낭비되는 경우가 많다.
이럴때 동적 메모리 할당 이라는 방법을 이용한다.
malloc 함수를 이용한다.
이는 memory allocation의 약자이다.
이 함수를 사용하기 위해서는
#include <stdlib.h>
코드를 써줘야 한다.
free를 이용해 메모리 영역을 다시 돌려준다.
이를 해제(free)라고 한다.
free를 제대로 하지 않아 발생하는 문제를 메모리 누수(memory leak)라고 한다고 한다.
이 부분은 이것만 봐서는 이해가 잘 안돼서 다른 자료들도 참고했다.
열혈 C 프로그래밍 - 25강
책의 25강에서 메모리 구조와 동적 할당을 다뤄 이 부분을 정리해 보려 한다.
C 언어의 메모리의 구조
4개의 메모리 영역으로 나누어져 있다.
코드 영역 (Code Area)
실행할 코드가 저장됨 CPU는 코드 여역에 저장된 명령문드을 하나씩 가져가서 실행함.
데이터 영역 (Data Area)
전역변수와 static으로 선언되는 static 변수가 할당.
이 영역에 할당되는 변수들은 프로그램의 시작과 동시에 할당되어 프로그램 종료시까지 남아있음.
스택 영역 (Stack Area)
지역변수와 매개변수가 할당됨. 함수를 빠져나가면 소멸된다는 특징이 있음.
힙 영역 (Heap Area)
데이터 영역과 스택 영역에 할당되는 변수들은 생성과 소멸의 시점이 경정되어 있다.
하지만 다른 성격의 변수가 필요하기도 하는데 C언어에서 프로그래머가 원하는 시점에 변수를 할당하고
소멸하도록 지원을 하는 유형의 변수들이 할당되는 영역이 힙 영역이다.
스택은 차곡차곡 쌓여져 나가기에 처음 할당된게 가장 마지막에 소멸된다.
'코딩 > C, C++' 카테고리의 다른 글
[C++] 씹어먹는 C++ 공부 정리(~오버로딩, 생성자) (0) | 2022.08.05 |
---|---|
[C] 씹어먹는 C 공부 정리(~포인터) (0) | 2022.08.05 |
[C, C++] 작은 따옴표와 큰따옴표의 차이는? (0) | 2022.07.25 |