Handle and Pointers





" C++/CLI 는 C++, C#, VB.NET 에서 .NET 프로그래밍을 한다는 것을 의미 " 을 되세기면서!!

C++ 에서 포인터를 표시하기 위하여 '*' 를 사용한다. '*' 는 CRT(Common Run-Time) Heap 에 존재하는 Native Pointer 를 위해 디자인 되었다.
C++/CLI 에서 '^' 는 Handle 을 의미한다. '^' (Handle) 은 Managed Heap 에 존재하는 Managed Pointer 와 "Safe Pointer" 를 위해 디자인 되었다.




■ Handle

Handle 은 참조(Reference) 비슷하다. 하지만 Native Pointer 와는 같지 않다. 즉, Handle 은 Gabage Collector 가 메모리를 관리해주기 때문에 Memory leak 을 일으키지 않는다.
Handle 은 프로그램이 실행되는 동안에 이동될 수 있기 때문에 고정된 메모리 주소를 갖지 않는다.




■ Handle 의 생성

어떠한 클래스나 Value Type 의 새로운 Reference 를 생성하기 위해서는 gcnew 키워드로 생성한다.





■ Tracking Reference - %

C++ 에는 포인터 * 가 있다. 또한 Reference 라고 하여 & 를 지원한다.
이와 같은 목적으로 C++/CLI 에 Handle ^ 가 있다면 이를 편하게 사용할 수 있는 Tracking Reference % 가 있다.
사용 예는 다음과 같다.








■ nullptr

nullptr 은 null Reference 를 나타낸다. 자세한 내용은 아래 링크를 참조
nullptr




■ 참조

1. Quick C++/CLI - Learn C++/CLI in less than 10 minutes (CodeProject)
2. gcnew
3. nullptr

Posted by six605
,