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
'programing' 카테고리의 다른 글
Launch Arguments를 사용하는 경우 Git에서 / xcuserdata /를 무시하는 것이 안전합니까? (0) | 2021.01.18 |
---|---|
Count를 기반으로 한 IF ELSE 문을 사용하여 다른 Insert 문 실행 (0) | 2021.01.18 |
BackgroundWorker가 개체를 반환하도록하는 방법 (0) | 2021.01.18 |
IBOutlet은 속성이고 합성되어야합니까? (0) | 2021.01.18 |
다중 값 매개 변수의 기본값으로 모두 선택 (0) | 2021.01.18 |