gpt4 book ai didi

c# - 如何在 C# 中就地截断数组

转载 作者:行者123 更新时间:2023-11-30 01:46:18 25 4
gpt4 key购买 nike

我的意思是这真的可能吗? MSDN 说数组是固定大小的,调整大小的唯一方法是“复制到新位置”。但也许使用内部 CLR 结构的不安全/一些魔法是可能的,它们都是用 C++ 编写的,我们有完整的内存控制,可以调用 realloc 等等。

我没有为这个问题提供代码,因为我什至不知道它是否可以存在。


我不是在谈论 Array.Resize 方法等,因为它们显然没有所需的行为。

假设我们有一个标准的 x86 进程和 2GB 内存,我有 1.9GB 由单个阵列填充。然后我想释放它的一半。所以我想写这样的东西:

MagicClass.ResizeArray(ref arr, n)

并且不要得到 OutOfMemoryException。 Array.Resize 将尝试分配另一个 GB 的 RAM,但会因 1.9+1 > 2GB OutOfMemory 而失败。

最佳答案

你可以试试Array.Resize():

  int[] myArray = new int[] { 1, 2, 3, 4 };
int myNewSize = 1;

Array.Resize(ref myArray, myNewSize);

// Test: 1
Console.Write(myArray.Length);

关于c# - 如何在 C# 中就地截断数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419237/

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