포인터 초기화 [ 크래프톤 정글 37일차 ]
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
C언어 프로그래머, 소프트웨어 개발자
핵심 요약
- 포인터는 반드시 초기화해야 한다.
- 초기화하지 않으면 쓰레기 값(garbage value)
이 할당되어 예상치 못한 동작 발생
- NULL
이 아닌 임의의 메모리 주소가 할당될 수 있음
- C 언어는 포인터 초기화를 자동으로 하지 않는다.
- 성능 최적화를 위해 메모리만 할당하고 값은 초기화하지 않음
malloc
,calloc
,realloc
사용 시 포인터 초기화 필수.
- 동적 메모리 할당 후 반드시 NULL
또는 적절한 값으로 초기화해야 함
섹션별 세부 요약
**1. 키워드 공부**
- 포인터, 가상화, GCC, 포인터 연산, 동적 메모리 할당,
malloc
,calloc
,realloc
, B Tree, 위상정렬, Trie, KMP 알고리즘, 보이어-무어 알고리즘 NULL
이 아닌 임의의 메모리 주소가 할당될 수 있음malloc
과calloc
은 메모리 할당만 수행하고 값 초기화는 하지 않음
**2. 테스트 케이스**
Linked List
,Stack
,Queue
,Binary Tree
,Binary Search Tree
Stack
의top
값이 초기화되지 않으면쓰레기 값
이 할당되어 예상치 못한 동작 발생push
및pop
연산이 정확하게 동작하지 않을 수 있음
**3. 책 읽기**
CS APP
6장: 메모리 계층 구조- C 언어는 성능 최적화를 위해 포인터 자동 초기화를 하지 않음
NULL
이 아닌 임의의 주소가 할당될 수 있어Segmentation Fault
발생 가능
결론
- 포인터를 사용할 때 반드시
NULL
또는 적절한 값으로 초기화해야 한다.
- malloc
, calloc
, realloc
사용 후 반드시 초기화
- Segmentation Fault
및 free()
오류를 방지하기 위해 필수
- NULL
이 아닌 임의의 메모리 주소가 할당될 수 있어 예상치 못한 동작 방지 필요