Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为重复使用的阵列/缓冲区保留空间_C#_.net_Win Universal App_Uwp - Fatal编程技术网

C# 为重复使用的阵列/缓冲区保留空间

C# 为重复使用的阵列/缓冲区保留空间,c#,.net,win-universal-app,uwp,C#,.net,Win Universal App,Uwp,我使用的是大型阵列,每个阵列有很多MB,但在任何时候都只有一个阵列—一个被释放,另一个被创建以取代它。它们的长度不相等,但长度确实有一个上限 不是每次都分配一个新数组,而是有没有一种方法可以为可能最大的数组分配空间,我可以找出并使用创建每个新数组所需的任意长度。我不能使用完全相同的数组,也不能使用一个变量来表示长度,因为我需要将数组提供给其他我不控制的方法,这些方法需要精确地表示其中包含的数据的长度,而这些数据的长度不是常数。我记得读过一些可以这样做的类,我们要求它提供一个缓冲区,然后将其返回给

我使用的是大型阵列,每个阵列有很多MB,但在任何时候都只有一个阵列—一个被释放,另一个被创建以取代它。它们的长度不相等,但长度确实有一个上限


不是每次都分配一个新数组,而是有没有一种方法可以为可能最大的数组分配空间,我可以找出并使用创建每个新数组所需的任意长度。我不能使用完全相同的数组,也不能使用一个变量来表示长度,因为我需要将数组提供给其他我不控制的方法,这些方法需要精确地表示其中包含的数据的长度,而这些数据的长度不是常数。我记得读过一些可以这样做的类,我们要求它提供一个缓冲区,然后将其返回给类。

您可以创建自己的内存管理器,在您拥有的内存太小时创建一个最新的数组,或者返回以前分配的数组

您还可以使用来存储数据。此流将调整自身大小,以容纳必须存储的数据。 使用或,您可以轻松地在流中插入/读取数据


要从InMemoryRandomAccessStream中获取输入或输出流,您可以使用:或

每次进入时在何处创建新的输入或输出流?你能不能把作用域移到一个单例上,比如应用程序?@RowlandShaw,正如我写的,我不能使用完全相同的数组,因为它的大小并不总是恒定的。因此,如果它不总是恒定的,它必须包含不同的数据,在这一点上你必须持久化/去相关数据,那么你希望实现什么呢?不可能对我们看不到的代码提出改进建议,因此我们不知道数组大小的启发式方法,也不知道是否需要保留缓存practical@RowlandShaw正如我写的,但我可以假设一些最大大小-我想保留一个这样大小的数组,所以,在这种情况下,为什么不使用具有硬编码长度的数组呢?目前尚不清楚语言/框架中的选项有哪些不起作用,或者您尝试了哪些,在此基础上,我可以理解为什么其他人可能选择将此问题标记为……没有显示任何研究成果;或者不清楚