顺序内存分配

时间:2015-08-02 08:02:11

标签: c++ c memory memory-management

我正在计划一个在内存中分配大量变量的应用程序。与另一个“常规”应用程序不同,我希望将此内存分配给4096字节的特定内存块。我分配的变量必须按顺序放在内存中。一个接一个,为了填补整个分配的内存。

例如,我在内存中分配一个区域(4096字节),这个区域已准备好供我进一步使用。从现在开始,每次我的应用程序在内存中创建一个新变量(可能在“常规”应用程序中使用 malloc )时,此变量将被放置在我的内存区域的可用空间中。

这种顺序内存分配类似于数组分配的工作方式。但是,就我而言,我需要一个能够包含许多类型数据的数组(string,byte,int,...)。

一种可能的解决方案是通过指针算术实现这一点。我想避免这种方法,这可能会在我的应用程序中插入很多错误。

也许以前有人解决了这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

malloc()绝不保证后续分配的块在顺序存储器地址上。更糟糕的是,大多数实现在分配的块之前和/或之后使用少量字节用于“管家”。这意味着,即使您很幸运地址是连续的,块之间也会有小的差距。因此实际分配的块略大,以便为那些“家务管理”提供空间。字节。

如您所知,您需要自己编写一些代码并使用malloc()realloc()编写一些函数,...您可以隐藏这些函数中的所有逻辑,并且应该与使用malloc()相比,使用这些函数的应用程序代码更复杂,如果它能达到您想要的效果。

重要问题:为什么需要将这些块彼此相邻?那么解冻块呢?