C언어 포인터 초기화 필수 이유 및 방법 [37일차]
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

포인터 초기화 [ 크래프톤 정글 37일차 ]

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

C언어 프로그래머, 소프트웨어 개발자

핵심 요약

  • 포인터는 반드시 초기화해야 한다.

- 초기화하지 않으면 쓰레기 값(garbage value)이 할당되어 예상치 못한 동작 발생

- NULL이 아닌 임의의 메모리 주소가 할당될 수 있음

  • C 언어는 포인터 초기화를 자동으로 하지 않는다.

- 성능 최적화를 위해 메모리만 할당하고 값은 초기화하지 않음

  • malloc, calloc, realloc 사용 시 포인터 초기화 필수.

- 동적 메모리 할당 후 반드시 NULL 또는 적절한 값으로 초기화해야 함

섹션별 세부 요약

**1. 키워드 공부**

  • 포인터, 가상화, GCC, 포인터 연산, 동적 메모리 할당, malloc, calloc, realloc, B Tree, 위상정렬, Trie, KMP 알고리즘, 보이어-무어 알고리즘
  • NULL이 아닌 임의의 메모리 주소가 할당될 수 있음
  • malloccalloc은 메모리 할당만 수행하고 값 초기화는 하지 않음

**2. 테스트 케이스**

  • Linked List, Stack, Queue, Binary Tree, Binary Search Tree
  • Stacktop 값이 초기화되지 않으면 쓰레기 값이 할당되어 예상치 못한 동작 발생
  • pushpop 연산이 정확하게 동작하지 않을 수 있음

**3. 책 읽기**

  • CS APP 6장: 메모리 계층 구조
  • C 언어는 성능 최적화를 위해 포인터 자동 초기화를 하지 않음
  • NULL이 아닌 임의의 주소가 할당될 수 있어 Segmentation Fault 발생 가능

결론

  • 포인터를 사용할 때 반드시 NULL 또는 적절한 값으로 초기화해야 한다.

- malloc, calloc, realloc 사용 후 반드시 초기화

- Segmentation Faultfree() 오류를 방지하기 위해 필수

- NULL이 아닌 임의의 메모리 주소가 할당될 수 있어 예상치 못한 동작 방지 필요