Como chamar uma função C ++ não gerenciada com um std :: vector como parâmetro de C #?

Eu tenho um front end em C # e um back-end em C ++ por motivos de desempenho. Agora eu gostaria de chamar uma função C ++ como por exemplo:

void findNeighbors(Point p, std::vector<Point> &neighbors, double maxDist);

O que eu gostaria de ter é uma função de wrapper em C # como:

List<Point> FindNeigbors(Point p, double maxDist);

Eu poderia passar uma matriz plana como Point [] para a dll C ++ não gerenciada, mas o problema é que não sei quanta memória alocar, porque não sei o número de elementos que a função retornará ...

Existe uma maneira elegante de lidar com isso sem ter problemas com vazamentos de memória?

Obrigado pela ajuda!

Benjamin

questionAnswers(4)

yourAnswerToTheQuestion