Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 垃圾回收在内存中移动引用的对象是否会破坏Unreal4引擎中的引用?_C++_Memory_Reference_Garbage Collection_Unreal Engine4 - Fatal编程技术网

C++ 垃圾回收在内存中移动引用的对象是否会破坏Unreal4引擎中的引用?

C++ 垃圾回收在内存中移动引用的对象是否会破坏Unreal4引擎中的引用?,c++,memory,reference,garbage-collection,unreal-engine4,C++,Memory,Reference,Garbage Collection,Unreal Engine4,假设我们有两个类: UCLASS() class SOME_API ClassA: public UObject { public: GENERATED_UCLASS_BODY() }; Unreal中的uObject是垃圾收集的。我是否正确地假设,如果refA引用的ClassA对象被GC在内存中移动,refA将不会被更新,并且会突然引用无效内存?有人知道虚幻情节4中的GC是否可以处理这种情况吗 GC不会随机移动ClassA,但如果它的upperty引用计数达到0,则refA将是一个悬空

假设我们有两个类:

UCLASS()
class SOME_API ClassA: public UObject
{
public:
  GENERATED_UCLASS_BODY()

};

Unreal中的uObject是垃圾收集的。我是否正确地假设,如果refA引用的ClassA对象被GC在内存中移动,refA将不会被更新,并且会突然引用无效内存?有人知道虚幻情节4中的GC是否可以处理这种情况吗

GC不会随机移动
ClassA
,但如果它的upperty引用计数达到0,则
refA
将是一个悬空引用。如果您想从非
UObject
UObject
进行弱引用,则可以使用。

您希望它如何处理这种情况?我不知道虚幻,但我希望他们提供某种智能指针,你可以用它作为参考,参与参考计数。关于悬空参考的部分我很清楚,但这仍然是有用的信息。我特别想知道是否可以移动对象,因为据我所知,许多地面军事系统可以自由移动对象,以避免内存中的碎片。在我也可以使用引用的情况下,我试图避免使用指针,因此不使用TWeakObjectPtr作为well@lolaldnee是的,这是可以理解的,然而就C++而言,更新一个指向已被移动到内存中的对象的引用是不可能的。Imo参考文献作为参数很好,但参考文献成员几乎总是一个错误(尽管只是一个观点)。如果您想避免检查
If
satements中的指针,那么最好的方法是断言它们的有效性,ue4有一个
check
宏。除此之外,指针和引用之间应该没有性能差异。
class ClassB
{
  ClassA& refA;
};