TArray成员变量介绍
TArray实际占用的内存,只有这3个成员变量的内存
Engine\Source\Runtime\Core\Public\Containers\Array.h
ElementAllocatorType AllocatorInstance; //数组内存分配器指针
SizeType ArrayNum; //数组长度
SizeType ArrayMax; //ArrayMax是数组最大可容纳元素的数量
TArray构造方式
拷贝构造
扩容方式和STL的vector是差不多的,当容量满了之后,会额外分配一个更大的内存,将整个数组的数据拷到新内存上,之后再释放旧的内存(InlineAllocator不会释放Inline部分)。
移动构造
C++11新增的移动构造函数
把传入TArray的Allocator的指针和数组容量拷贝到当前数组,而传入的数组直接恢复到无分配的默认状态。
因此使用移动构造函数用于以下三个方面能让性能更好
-
函数的参数
-
返回值
-
lambda时需要传入数组
对于左值一定要显式调用MoveTemp函数才能使移动构造函数生效。