从列表中获取数组而不进行堆分配
Posted
技术标签:
【中文标题】从列表中获取数组而不进行堆分配【英文标题】:Get array from list without heap allocation 【发布时间】:2016-03-30 15:16:33 【问题描述】:我有一个列表,我想将它的数组分配给一个属性。
public void BuildMesh(List<Vector3> list)
mesh.vertices=list.ToArray();
现在的问题:
该项目是游戏,在垃圾收集方面非常困难,因此 ToArray() 的默认实现不是一个选项,因为它会在列表的内部数组旁边创建一个新数组。 网格对象来自封闭源 API,顶点属性是 Vector3[],因此无法为其分配指针。我是否有任何选项来阻止堆分配?
编辑:这不是重复的
不能使用IList<Vector3>
。网格来自闭源 API,需要 Vector3[],因此我无法将 IList<Vector3>
分配给它。
【问题讨论】:
List<T> to T[] without copying的可能重复 @VadimMartynov 这是另一个问题。网格来自封闭源 API,需要 Vector3[],因此我无法将 IList我认为您正在使用 Unity。如果我是对的,请尝试接受List<Vector3>
的mesh.SetVertices(list)
。
【讨论】:
是的,它有效。我也很想找到该问题的一般解决方案。 我认为这是不可能的,因为 List以上是关于从列表中获取数组而不进行堆分配的主要内容,如果未能解决你的问题,请参考以下文章