gpt4 book ai didi

c - 分配/取消分配资源

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:08 32 4
gpt4 key购买 nike

我必须管理资源。它基本上是一个唯一的编号,用于标识交换机中的第 2 层连接。可以有 16k 个这样的连接,因此每次用户希望配置连接时,他/她都需要分配一个唯一索引。同样,当用户希望删除连接时,资源(号码)必须被释放并且必须可用于配置(和识别)其他连接。截至目前,我正在使用基于无符号字符数组的位图来维护设置/未设置的位

为了监控 16k 个数字,我使用了一个 2048 字节的无符号字符数组,其中每一位代表一个资源:

unsigned char bitmap_array[2048];

有没有更好的方法来做同样的事情,而不涉及如此巨大的静态分配 block ?

最佳答案

另一种方法是使用 Set [Hash/Tree],其大小将被动态选择。当且仅当此资源已分配时,每个元素都在集合中。

这些解决方案的问题是:
1.它会更慢。
2.当元素数量多时,它会比静态数组占用更多的内存。

对于 2k,我会坚持使用静态位图数组。

还有一种可能:

使用虚拟内存使用的相同技巧 (pages) .
将你的“数组”分成 N 个部分,并创建一个大小为 N 的额外表。
表中的每个元素都将映射到与其相关的数组的一部分。
现在,当你分配资源k时,你必须分配k所在的数组部分,[并将所有其他值设置为0]。

它仍然会比chunk慢,当所有entrees都分配完后,它会需要额外的N*4字节。

只有当数据比 2k 大得多时,我才会使用此解决方案。

更多信息:http://tldp.org/LDP/tlk/mm/memory.html

关于c - 分配/取消分配资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938056/

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