UE版本:4.26
这几天在写代码的时候,遇到了一个问题,就是我自建的继承自UObject的类,在使用TArray的Emplace时,出现了指针报空的问题。
调用示例如下:
class Test:public UObject
{
}
TArray<UTest*> Tests;
TempTest=NewObject<UTest>();
Tests.Emplace(Test);//报错行
报错代码:
template <typename... ArgsType>
FORCEINLINE SizeType Emplace(ArgsType&&... Args)
{
const SizeType Index = AddUninitialized(1);
new(GetData() + Index) ElementType(Forward<ArgsType>(Args)...);//报错行
return Index;
}
在逐行调试之后,发现出现这种情况的原因,可能有两种:
1.继承自UObject的类未写构造函数,猜测无法默认构造。
2.重复添加自身元素到自身当中,导致可能申请内存失败。
for (int i = 0; i < Tests.Num(); ++i)
{
if (Tests[i])Tests.Emplace(Tests[i]);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)