gpt4 book ai didi

c# - 使用固定指针将大型数据结构传递给非托管代码

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:49 24 4
gpt4 key购买 nike

我正在开发一个由两部分组成的应用程序:

  1. C# 前端
  2. C++ 数字运算器

在某些情况下,从 C# 传递到 C++ 的数据量可能非常大。我说的是 Gb,也许更多。特别是有大量 double ,我想将指向此数组的固定/固定指针传递给 C++ 代码。数字处理最多可能需要几个小时才能完成。我担心使用固定指针可能引发的任何问题。如我所见,垃圾收集器将很长时间无法接触到这个大内存区域。这会导致任何问题吗?我应该考虑不同的策略吗?

我认为我可以提供一个接口(interface)来从 C++ 代码中构建这个数组,而不是传递整个数组,这样内存就由应用程序的非托管部分拥有。但最终这两种策略都会创建一大块内存,这对于 C# 垃圾收集器来说很长一段时间是不可重定位的。我错过了什么吗?

最佳答案

你没有问题。大型数组分配在大型对象堆中。固定它们不会产生任何不利影响,LOH 不会被压缩。此处的“大”是指具有 1000 个或更多元素的 double 组,用于 32 位代码或等于或大于 85,000 字节的任何数组。

关于c# - 使用固定指针将大型数据结构传递给非托管代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com