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