托管 C++ ^(句柄)-->它是什么以及它与引用和指针有何关系

发布于 2024-08-13 04:03:39 字数 161 浏览 6 评论 0原文

托管 C++ 中的对象句柄(

例如:)

System::String^ str = gcnew System::String();

与普通 C++ 指针有什么区别?

另外它们与我们在 C# 中的引用有何关系?

What is the difference between a handle to an object in Managed C++

such as:

System::String^ str = gcnew System::String();

and the ordinary C++ pointers?

Also how do they relate to references we have in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七秒鱼° 2024-08-20 04:03:39

您不是在谈论(较旧的)托管 C++,而是在谈论 C++/CLI,对吧?

在 C# 中,您的代码相当于

System.String str=new System.String();

在 C++/CLI 中,对象的句柄与 C# 中的引用相同 - 您有引用计数、垃圾收集器等。

另一方面,普通的 C++ 指针(在大多数情况下)是情况)指向非托管对象的指针。 (当然)您可以使用 C++ 指针来指向托管对象,就像在 C# 中使用指针一样(在不安全的代码中)。请参阅此处了解 C# 中指针的详细说明,以及此处了解有关 C++/CLI 中指针的一些详细信息。这些指针不由垃圾收集器处理。

You are not talking about (the older) Managed C++, but about C++/CLI, right?

In C#, your code is equivalent to

System.String str=new System.String();

In C++/CLI, a handle to an object is just the same as a reference in C# - you have reference counting, garbage collector etc.

Ordinary C++ pointers, on the other hand, are (in most cases) pointers to unmanaged objects. You can (of course) have C++ pointers to managed objects, just the way you have pointers available in C# (in unsafe code). Look here for a detailed explanation of pointers in C#, and here for some details about pointers in C++/CLI. Those pointers are not handled by the garbage collector.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文