관리 된 C ++ ^ (핸들) -> 무엇이며 참조 및 포인터와 어떤 관련이 있습니까?
-
10-07-2019 - |
문제
관리되는 C ++의 핸들에 대한 핸들의 차이점은 무엇입니까?
와 같은:
System::String^ str = gcnew System::String();
그리고 평범한 C ++ 포인터?
또한 C#에있는 참고 문헌과 어떤 관련이 있습니까?
해결책
당신은 (오래된) 관리 C ++에 대해 이야기하고 있지만 C ++/CLI에 대해서는 이야기하고 있습니다.
C#에서는 코드가 동일합니다
System.String str=new System.String();
C ++/CLI에서 객체에 대한 핸들은 C#의 참조와 동일합니다. 참조 계산, 쓰레기 수집기 등이 있습니다.
반면에 일반적인 C ++ 포인터는 (대부분의 경우) 관리되지 않은 물체에 대한 포인터입니다. 물론 관리 된 객체에 C ++ 포인터를 가질 수 있습니다. C# (안전하지 않은 코드)에서 사용 가능한 포인터가있는 방식만으로도됩니다. 바라보다 여기 C#의 포인터에 대한 자세한 설명 및 여기 C ++/CLI의 포인터에 대한 자세한 내용은 이 포인터는 쓰레기 수집가가 처리하지 않습니다.
제휴하지 않습니다 StackOverflow