【发布时间】:2016-09-22 10:56:38
【问题描述】:
分配的共享内存是否有任何对齐?如果是,是否适用于所有操作系统?
例如在 boost 中分配共享内存:
boost::interprocess::shared_memory_object* segment =
new boost::interprocess::shared_memory_object(
boost::interprocess::create_only,
"name",
boost::interprocess::read_write);
segment->truncate(10000);
【问题讨论】:
-
不,不。在构成当前 C++ 标准的 1400 页中,没有提到任何称为“共享内存”的东西。这是特定于操作系统的资源,因此,共享内存的特定细节是特定于每个操作系统的。
-
假设通用分配器以基本对齐方式返回内存(即
alignof(std::max_align_t),因此它应该适用于“正常”类型)可能是合理的。
标签: c++ boost shared-memory