(사색) 링크드 리스트 구현중에 들었던 의문에 대한 기록(클래스 전체 초기화 / 클래스 개별 요소 포인터로 초기화 차이)

링크드 리스트 구현중에 들었던 의문에 대한 기록(클래스 객체 전체 초기화 / 클래스 객체 개별 요소를 포인터로 초기화 차이)


노드 클래스를 아래와 같이 정의 하였을 때














노드 클래스 전체 초기화 / 클래스 개별 요소를 포인터로 초기화 차이 탐구










* _head 동적할당 O / 초기화 X
- _head 라는 노드 클래스를 동적 할당 받은 상태의 데이터는 메모리의 임의의 위치를 가리키게 된다.
- 클래스 안의 요소 data 와 next 역시 쓰레기 값이 저장되어 있다.
- 헤드가 가리키는 주소값은 클래스 첫번째 요소인 data의 주소값과 동일 하게 가리키고 있다.









* _head 동적할당 O / 초기화 NULL
- _head 가 NULL로 초기화 되면서 클래스의 요소들은 메모리 위에 없는 처리가 되기에 접근 시도 시 오류가 발생한다.







* _head 동적할당 X / 초기화 NULL
- 마찬가지로 접근 시도 시 오류가 발생한다.








* _head 동적할당 O / 요소 데이터 각각 초기화 NULL
- 동적할당을 받은 경우 요소의 각 데이터 값은 NULL인 0으로 초기화가 되어 있다.
- 참고로 객체의 주소는 요소의 첫번째 데이터(data) 주소와 동일하게 저장되어 있다.







< 결론 >
- 요소를 가진 클래스를 전체를 NULL로 초기화를 하면 개별 요소로 접근 불가능
- 동적할당 받은 클래스를 포인터로 각각 요소를 초기화 하면 개별 요소로 접근 가능







댓글