Unreal Engine 4 C++ 是托管的还是非托管的?
Is Unreal Engine 4 C++ managed or unmanaged?
Unreal Engine 4 控制应用程序的某些运行时方面,例如拥有自己的垃圾收集器和独特的元数据(“反射”)系统。
问题是:UE4 在“托管”和“非托管”语言的上下文中使 C++ 代码“托管”是否正确(因为 C# 是托管语言,C++ 是非托管语言)?
C++ 不是托管语言。 visual studio 中有 C++/CLI 是托管的,但它不是真正的 C++。垃圾收集之类的东西可以通过一些工作在 C++ 代码中实现,并且对某些应用程序很有用(我不得不这样做)。通过更多的工作甚至可以进行反射,但它本身不受支持。反射并不真的意味着在代码中调用编译器。你甚至可以在 C 中做到这一点。
如果“托管”是指“托管内存”,意思是“垃圾收集”,那么 C++ 允许您根据需要选择加入,但默认情况下它不提供这样的东西。
C# 与 Java 和许多其他语言一样,强制对您进行垃圾收集,没有办法解决它。
在 C++ 中,您可以使用 std::shared_ptr
之类的东西来环绕任何您想要进行垃圾回收的对象。
请记住,在 C++ 中有多种分配和初始化方法。在必须以牺牲复杂性为代价来优化性能的情况下,编写自定义分配器并不少见,只要它以非常特定的方式使用,它就可以走捷径。
所以换句话说,C++ 是“托管的”如果你想要 和你希望如何管理它。 C++ 中的管理是您积极参与的过程。
Unreal Engine 4 控制应用程序的某些运行时方面,例如拥有自己的垃圾收集器和独特的元数据(“反射”)系统。
问题是:UE4 在“托管”和“非托管”语言的上下文中使 C++ 代码“托管”是否正确(因为 C# 是托管语言,C++ 是非托管语言)?
C++ 不是托管语言。 visual studio 中有 C++/CLI 是托管的,但它不是真正的 C++。垃圾收集之类的东西可以通过一些工作在 C++ 代码中实现,并且对某些应用程序很有用(我不得不这样做)。通过更多的工作甚至可以进行反射,但它本身不受支持。反射并不真的意味着在代码中调用编译器。你甚至可以在 C 中做到这一点。
如果“托管”是指“托管内存”,意思是“垃圾收集”,那么 C++ 允许您根据需要选择加入,但默认情况下它不提供这样的东西。
C# 与 Java 和许多其他语言一样,强制对您进行垃圾收集,没有办法解决它。
在 C++ 中,您可以使用 std::shared_ptr
之类的东西来环绕任何您想要进行垃圾回收的对象。
请记住,在 C++ 中有多种分配和初始化方法。在必须以牺牲复杂性为代价来优化性能的情况下,编写自定义分配器并不少见,只要它以非常特定的方式使用,它就可以走捷径。
所以换句话说,C++ 是“托管的”如果你想要 和你希望如何管理它。 C++ 中的管理是您积极参与的过程。