gpt4 book ai didi

c++ - 顺序内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:57 25 4
gpt4 key购买 nike

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

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

这种顺序内存分配类似于数组分配的工作方式。但是,就我而言,我需要一个能够包含多种数据类型(字符串、字节、整数……)的数组。

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

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

谢谢!

最佳答案

malloc() 绝不保证后续分配的 block 位于顺序内存地址上。更糟糕的是,大多数实现在分配的 block 之前和/或之后使用少量字节进行“内务处理”。这意味着,即使您很幸运地址是连续的, block 之间也会有小间隙。因此,实际分配的 block 会稍微大一些,以便为那些“管理”字节腾出空间。

正如您所建议的,您需要自己编写一些代码并使用 malloc()realloc() 编写一些函数,...您可以隐藏与使用 malloc() 相比,这些函数中的所有逻辑不应使使用这些函数的应用程序代码更复杂。

重要问题:为什么需要让这些 block 彼此相邻?释放 block 怎么样?

关于c++ - 顺序内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31769793/

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