在C中扩展动态内存的最佳方法

0 c memory memory-management

我正在寻找一种方法在运行时为现有结构(已经最初分配了内存)分配额外的内存(在C中).我有一种感觉,我可以使用memmove或类似的东西,但这仍然只是一个复制操作,并没有增加运行时结构可用的内存量.此外,我不想每次需要时都复制整个结构,这在程序期间会有数百次(结构已经很大).有人可以帮忙吗?

更新:感谢大家的回复.为了提供更多细节,我想要做的是运行一个MPI并行化的代码,该代码最初创建了许多结构实例(称之为'S').结构的每个实例都包含一个数组'T',它记录了代码运行时发生的特定事件的时间.这些事件在运行时发生,并且每个S实例的事件数量不同.例如,S [0]可能会看到100个事件(因此需要一个长度为100个元素的数组),但S [1]可能只看到1个事件(以及S [2] 30事件等)因此,为S的每个实例(有数百万个)在开始时分配大量内存将是非常浪费的,因为有些可能会填充数组但其他人不会甚至接近.事实上,我已经尝试过这个,对于我运行它的机器来说太过分了.

我会在这里尝试一些想法并发布我的进展.非常感谢!

Ale*_*nze 5

你可以使用realloc().

  • 请记住,如果新内存块大于旧内容,它可能会移动旧内容,因此旧指针无效 (2认同)