【发布时间】:2011-03-01 10:16:50
【问题描述】:
我有一个生成 size_t 值的函数(例如,名为 next_entity)。该函数充当生成器,即在每次调用时生成一个新值,最后返回 0 作为标记。
在另一个调用next_entity 的函数中,我需要将值存储在某处。在收到哨兵之前我不知道值的数量,所以我不能malloc 或在它们到来之前静态分配一个数组来包含这些值。
问题是,在哨兵到来之后,我唯一需要对值做的就是将它们保存到文件中,但不能重复,即每个值只能出现一次。
之后,不再需要这些值。
我尝试在迭代期间使用glib.h 中的GHashTable 将值存储为键,但GHashTable 的问题是传递给函数 g_hash_table_insert 的键的指针必须在迭代期间保持活动状态哈希表的生命周期,所以我必须为每个新值做malloc(sizeof(size_t))。
它可以工作,但似乎效率很低,因为malloc 很耗时。
有没有更好的方法来做到这一点?
如果需要,我可以发布真实代码,但我不认为问题出在代码上。
任何帮助将不胜感激,在此先感谢您!
【问题讨论】:
-
next_entity 生成什么样的值?样本值会有所帮助。如果它可以被视为某个范围内的整数,我有一个想法,但不适用于任何泛型类型。
-
321681232;321682368;321681472;326130336;326165232;325443504; 321680432;324998096;320391552;326178192;326178160;321680208; 325442128;324791472;326130304;326182544;325030320;326160816; 321680880;325442192;
-
@sanjeevakumar-hiremath 你的意思是位数组吗?
标签: c arrays malloc hashtable glib