programing

gcnew 란 무엇입니까?

goodcopy 2021. 1. 18. 22:04
반응형

gcnew 란 무엇입니까?


나는이 코드를 우연히 발견했고 그것이 의미하는 바를 저자에게 물어보기에 너무 자랑 스럽습니다.

Hashtable^ tempHash = gcnew Hashtable(iterators_);

IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();

gcnew단순히 사용하는 것이 아니라 사용하는 것이 무엇 이며 얼마나 중요 new합니까? (저는 또한 캐럿에 의해 곤란을 겪 습니다 . 여기에서 그것에 대해 물었 습니다 .)


gcnew 는 .NET 참조 객체 용입니다. gcnew로 생성 된 객체는 자동으로 가비지 수집됩니다. gcnew를 CLR 유형과 함께 사용하는 것이 중요합니다.


gcnew은 연산자와 마찬가지로 연산자입니다. 단 new, delete이를 사용하여 생성 할 필요가 없습니다 . 그것은의 g의 arbage의 c를 ollected. 당신은 사용 gcnew, .NET 관리 유형의 작성 및 new관리되지 않는 형식을 만들기위한.


캐럿 '^'는 유형을 선언 할 때 C / C ++의 '*'와 비슷하게 작동합니다.

// pointer to new std::string object -> memory is not garbage-collected
std::string* strPtr = new std::string;

// pointer to System::String object -> memory is garbage-collected
System::String^ manStr = gcnew System::String;

관리되는 개체를 C / C ++의 포인터처럼 'nullptr'과 비교할 수있는 관리 개체로 설명 할 때 '포인터'라는 용어를 사용합니다. C / C ++의 참조는 기존 개체의 주소이므로 'nullptr'과 비교할 수 없습니다.

관리되는 개체는 자동 참조 계산을 사용합니다. 즉, 둘 이상의 연결할 수없는 개체가 서로를 참조하는 경우에도 여전히 메모리 누수가 발생하지만 참조 수가 0 일 때 자동으로 소멸됩니다. 자동 참조 계산은 성능면에서 자유롭지 않으므로 현명하게 사용하십시오.

참조 URL : https://stackoverflow.com/questions/202459/what-is-gcnew

반응형