gpt4 book ai didi

c++ - 将内存池与需要对齐内存的 cpu 一起使用是个好主意吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:34 24 4
gpt4 key购买 nike

CPU and Data alignment在这个问题中,Yann Ramin 曾说过一些 cpus(ARM 或 Intel SSE 指令)需要对齐内存并且在进行未对齐访问(或抛出异常)时具有未定义的操作。如果我使用不能处理这种情况的内存池,它会使我的应用程序变得更糟吗?

最佳答案

使用未对齐的内存几乎总是一个坏主意,不仅是在明确不允许的情况下。即使它不会导致错误,如果内存访问跨越高速缓存行边界和其他情况(请参阅 Tony D 的评论),它也会比没有跨越时慢。只需使用返回对齐地址的内存池即可。

您可以通过使用 new 分配一大块字节并将其分成给定数量的 4、8、16 ... 字节 block 并返回最小的字节 block 来创建一个简单的对齐内存池合身。您可以使用位图来跟踪分配了哪些 block 。我应该说这是低效的。我认为这更多的是为了娱乐/学习而不是生产,或者您只需使用 new。编写您自己的分配器并不容易,您可以查看 malloc 的实现以了解我的意思。在速度、空间效率和碎片化之间很难取得平衡。

关于c++ - 将内存池与需要对齐内存的 cpu 一起使用是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24926124/

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