我有以下 struct :
public struct BasicIndividualStruct
{
public void Dispose()
{
path.Dispose();
}
public float fitness;
public UnsafeList<float2> path;
}
public struct NativeBasicPopulation
{
public void Dispose()
{
foreach(var individual in _population)
{
individual.Dispose();
}
_population.Dispose();
}
public NativeArray<BasicIndividualStruct> _population;
}
我是这样创建的:
var population = new NativeArray<BasicIndividualStruct>(50, Allocator.TempJob);
for (int i = 0; i < populationSize; i++)
{
var element = population[i];
element.path = new Unity.Collections.LowLevel.Unsafe.UnsafeList<Unity.Mathematics.float2>(10, Allocator.TempJob);
element.path.Resize(10);
element.fitness = 0;
population[i] = element;
}
var pop = new NativeBasicPopulation()
{
_population = population
};
我的问题是-工作结束后如何妥善处理?
NativeBasicPopulation
中的_population
只是本地pop
变量的副本,因此我需要立即在pop
上调用Dispose
?
NativeBasicPopulation::Dispose
内部的循环真的会起作用吗?因为根据我的理解,给定循环中的individual
只是数组中元素的副本.