본문 바로가기
C++/공부

[C++] Reference(참조자), 데이터 동적 할당 new 개념 공부

by 왹져박사 2024. 8. 16.

1. Reference(참조자)

 

C와 C++의 차이를 공부하다가 레퍼런스에 대하여 공부하게 되었다. 

 

레퍼런스는 C에는 없던 개념으로, 포인터와 유사한 개념이다. 

하지만 포인터가 메모리 상에 존재하여 공간을 차지하는 반면 레퍼런스는 보통의 경우 공간을 차지하지 않는다. 

 

레퍼런스를 사용하는 이유는, 참조하는 타입의 크기와 상관없이 주소값만 전달하면 되기 때문이다. 

 

개념을 공부하며 다른 사람에게 설명하기 쉬운 비유가 생각났다. 

예를 들어, 

ppt로 포트폴리오를 만들어 메일로 첨부하는 것 (직접 타입 전달)과

드라이브에 포트폴리오를 올려 URL을 첨부하는 것 (주소값 전달)의 차이와 비슷하다고 느꼈다. 

실제로 Gmail을 보내게 되면 일정 이상의 크기는 직접 첨부가 아니라 구글 드라이브 링크를 통하여 전달하게 된다. 

따라서 전달하는 데이터가 훨씬 줄어들게 된다. 

 

 

2. C++의 데이터 동적 할당 new

 

C에서는 Heap에 데이터를 동적 할당하기 위하여 malloc, 해제를 위하여 free를 사용한다. 

C++에서는 동적 할당을 new로, 해제를 delete로 한다. 

동적 할당은 포인터로 주소를 해당 메모리만큼을 확보하고 주소를 전달하여 할당되는 방식이다. 

 

이 부분을 공부하며 C#의 new와 다른점이 궁금하여 찾아보았다. 

우선적으로, C#은 가비지컬렉션으로 자동으로 메모리 관리를 진행하여 

포인터가 아니라 위의 레퍼런스로 인스턴스를 참조한다. (C#은 포인터의 개념이 겉으로 드러나지 않는다. )