内存对齐

内存4K对齐.png

参考代码

 MemoryRegion(size_t size, size_t alignment = 0)
        : IMemoryRegion(size), _mem(nullptr), _ptr(nullptr)
    {
        if(size != 0)
        {
            // Allocate backing memory
            size_t space = size + alignment;
            _mem         = std::shared_ptr<uint8_t>(new uint8_t[space](), [](uint8_t *ptr)
            {
                delete[] ptr;
            });
            _ptr = _mem.get();

            // Calculate alignment offset
            if(alignment != 0)
            {
                void *aligned_ptr = _mem.get();
                std::align(alignment, size, aligned_ptr, space);
                _ptr = aligned_ptr;
            }
        }
    }

aligned_alloc

Defined in header <stdlib.h>

void *aligned_alloc( size_talignment, size_t size);
(since C11) |

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容