缩小指针数组的内存,可能吗?

时间:2014-10-02 17:59:55

标签: c

我很难找到可能的解决方案,所以我决定发布我的问题。我正在用C编写一个程序,并且:

  • 我正在生成一个包含大量int指针的巨大数组,它在运行时动态分配并填充。所以在我不知道将添加哪些指针以及有多少指针之前。问题是他们只是对他们中的许多人来说,所以我需要以某种方式缩小空间。

是否有任何可用的包或工具可能以某种方式编码我的条目或更改表示以便节省空间?

另一个问题,我还想过用我的信息写一个文件,然后这个文件一直保存在内存中,还是我再次重新打开文件?

1 个答案:

答案 0 :(得分:0)

看起来你正在寻找一个简单的动态数组(the advanced data type dynamic array,即)。这应该有很多实现。您可以简单地从一个小型动态数组开始,然后将新项目推送到后面,就像使用c ++或java中的向量一样。一个实现是GArray。您只需分配所需的内存。

如果您必须手动执行此操作,通常的方法是将您分配的数组的容量和大小与结构中的指针一起存储,并在需要时从push_back()内调用realloc()更多的空间。通常,您应该将阵列的大小增加1.3到1.4倍,但如果您不期望使用巨大的阵列,则可以使用2倍。如果您调用remove并且您的大小低于某个阈值(例如capacity / 2),则使用realloc()再次缩小数组;