c++ - 我需要对齐的内存存储来加载文件吗?
问题描述
我需要将使用 fstream 的文件加载到内存中的字体传递到FT 库函数中。它必须是基本字符指针。现在经过一些阅读,我怀疑我是否需要分配实际对齐的内存存储来加载文件。我认为创建字体文件时,其中包含不同类型的数据,如果文件加载到未对齐的字符数组中(即,它从未对齐的基地址开始)可能会出现一些问题(至少,性能问题)读取数据时。或者也许我错了,一切都很好。
解决方案
经过进一步调查,我发现我不需要明确地进行对齐。从关于分配功能的标准[basic.stc.dynamic.allocation]:
返回的指针应适当对齐,以便可以将其转换为指向任何合适的完整对象类型的指针。
来自 cppreference.com 关于std::max_align_t
:
分配函数返回的指针,例如
std::malloc
为任何对象适当对齐,这意味着它们至少与std::max_align_t
.
因此对齐已经由编译器处理。
推荐阅读
- reactjs - React Context API - Reducer 编辑整个对象而不是其属性
- java - Try/Catch 循环不会触发 IllegalStateException 上的 catch 语句
- python - 使用 from_pandas 从 oracle 数据库到 vaex 的 5000 万条记录
- javascript - Python Selenium javascript 错误:不支持 shape=rectangle
- c - __builtin_object_size 总是返回 -1
- python - 在 matplotlib 中手动定义比例
- ruby-on-rails - 从表格中的价格中删除美元符号和逗号
- entity-framework - 在 .NET Core 3.1 中使用 AutoMapper、WebApplicationFactory、Entity Framework 和 DTO 进行集成测试
- javascript - 如何使用 Jest 测试不同的屏幕宽度
- database - 如何使用 vb.net 创建 AutoBackup SQL 数据库?