C언어 요점 정리 - 정적할당 동적할당 비교
2022. 1. 20. 19:54ㆍC언어
- 컴파일 타임이란 무엇인가? : 컴파일이 진행되는 하는 과정(시간)
- 런타임이란 무엇인가? : 프로세스가 작동되는 시간, 실행 중
- `int arr[20];` 방식과 `int *arr = malloc(sizeof(int) * 5);` 방식에서 서로에 대한 장단점을 써주세요.
- `int arr[20]` 장점 : 메모리 자동할당, 메모리 자동반납, 사용하기 편하다.
- `int arr[20]` 단점 : 메모리의 크기가 런타임이 아닌, 컴파일 타임에 미리 결정되어야 한다. 즉 유연함이 없다. 크기를 사용자가 아닌 개발자가 임의로 정해야 한다.
- `int *arr = malloc(sizeof(int) * 5)` 장점 : 메모리의 크기를 컴파일 타임이 아닌, 런타임에 결정할 수 있다. 즉 메모리의 크기를 사용자의 의도에 맞게 결정 할 수 있다. 그리고 메모리의 수명을 개발자가 직접 컨트롤 할 수 있다. 메모리 해제 하는 방법 : free(arr);
- `int *arr = malloc(sizeof(int) * 5)` 단점 : #include <stdlib.h> 를 써줘야 한다. 메모리를 수동으로 할당해야한다. 메모리를 수동으로 반환해야 한다. 만약에 이 부분에서 실수가 발생하면 메모리 누수가 일어날 수 있다.
- `size`가 int 변수이고 값이 `5` 일때, `int arr[size];` 가 안되는 이유는? : arr 배열의 크기는 컴파일 타임에 결정되어야 하는데, size의 값은 런타임에 결정된다.
- 동적할당이란 무엇인가? : 메모리를 힙에서 할당 받는 방식, malloc을 통해서 메모리의 크기를 자유롭게 요청가능.
- 정적할당이란 무엇인가? : 메모리를 스택에서 할당 받는 방식, 컴파일 타임에 미리 결정된 크기만을 받을 수 있다.
- 정적할당의 장점은? : 편하다.
- 정적할당의 단점은? : 수명조절 불가, 유연함 없다.
- 동적할당의 잠점은? : 수명조절 가능, 유연함이 있다.
- 동적할당의 단점은? : 큰 힘에는 책임이 따른다. 잘 못 사용했을 때는 메모리 누수와 같은 사고가 일어 날 수 있다.
728x90
'C언어' 카테고리의 다른 글
C언어 요점 정리 - 정렬(순차정렬) (0) | 2022.11.13 |
---|---|
C언어 요점 정리 - strcpy함수 (0) | 2022.01.25 |
C언어 부가 설명 - 구조체 연결리스트 (0) | 2022.01.20 |
C언어 부가 설명 - 구조체 변수의 주소를 이용해서 원본값을 변경하는 함수 (0) | 2022.01.20 |
C언어 요점 정리 - 구조체 (0) | 2022.01.19 |