当前位置:  开发笔记 > 编程语言 > 正文

什么是gcnew?

如何解决《什么是gcnew?》经验,为你挑选了3个好方法。

我偶然发现了这段代码,我很自豪地去问作者这意味着什么.

Hashtable^ tempHash = gcnew Hashtable(iterators_);

IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();

gcnew使用它而不仅仅是简单的是什么,有多重要new?(我也被插入符号困扰;我在这里问过这个问题.)



1> Steven A. Lo..:

gcnew用于.NET引用对象; 用gcnew创建的对象会自动被垃圾收集; 将gcnew与CLR类型一起使用非常重要



2> Joel Coehoor..:

gcnew是一个操作符,就像new操作符一样,除了你不必删除用它创建的任何东西.这是 arbage Ç ollected.您可以使用gcnew创建.Net托管类型,使用gcnew创建非托管类型.


upvoted(不是你需要积分),因为我们同时发布了相同的答案

3> user2796283..:

声明类型时,脱字号'^'与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”进行比较,因为它是现有对象的地址。

受管对象使用自动引用计数,这意味着当它们的引用计数为零时,它们将被自动销毁,尽管如果两个或多个无法访问的对象相互引用,则仍然会发生内存泄漏。请注意,自动引用计数并不是明智的自由表现,因此请明智地使用它。

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有