首页 > 解决方案 > 我需要对齐的内存存储来加载文件吗?

问题描述

我需要将使用 fstream 的文件加载到内存中的字体传递到FT 库函数中。它必须是基本字符指针。现在经过一些阅读,我怀疑我是否需要分配实际对齐的内存存储来加载文件。我认为创建字体文件时,其中包含不同类型的数据,如果文件加载到未对齐的字符数组中(即,它从未对齐的基地址开始)可能会出现一些问题(至少,性能问题)读取数据时。或者也许我错了,一切都很好。

标签: c++filememorymemory-managementalignment

解决方案


经过进一步调查,我发现我不需要明确地进行对齐。从关于分配功能的标准[basic.stc.dynamic.allocation]

返回的指针应适当对齐,以便可以将其转换为指向任何合适的完整对象类型的指针。

来自 cppreference.com 关于std::max_align_t

分配函数返回的指针,例如std::malloc为任何对象适当对齐,这意味着它们至少与std::max_align_t.

因此对齐已经由编译器处理。


推荐阅读