gpt4 book ai didi

delphi - 使用大的 TObjectList 并释放未使用的部分

转载 作者:行者123 更新时间:2023-12-03 14:46:54 25 4
gpt4 key购买 nike

我正在使用 TObjectList (Delphi 2007) 来存储大量数据 - 我预计有大约 30 万个元素甚至更多。但是,当创建列表时,它的默认大小设置为仅存储四个元素,如果尝试添加第五个元素,则存储八个元素,如果尝试添加第九个元素,则存储十六个元素,依此类推。这些数字可能有误,但我认为运作方式是正确的。这样做的问题是,所有元素都必须从内存的已释放部分复制到新扩展列表迁移的新内存块。我想设置一个特定的初始大小并取消分配(或撤消内存的保留,因为保留和分配不是同一件事)列表已分配/保留的任何未使用的空间。这可能不是很多代码,但我认为应该以问题和答案的形式对这个问题有一个永久、可靠的引用。

最佳答案

Capacity 设置为您期望的最大元素数,填充列表,然后将Capacity 设置为您实际使用的值(可选)。这避免了所有分配/移动/分配/移动的事情。

MyList.Capacity := 300000;
// Add 280000 items here

// Optionally, reduce the capacity. It's not important to do so unless
// you end up with a lot of unused items.
MyList.Capacity := MyList.Count;

关于delphi - 使用大的 TObjectList 并释放未使用的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934015/

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