我正在使用 boost::interprocess::offset_ptr<> 模板类专业化,作为我结构中多个字段的类型。不幸的是 offset_ptr 有一个底层指针的大小(在我的例子中是 8 个字节)。但是我确信,它永远不会超过 4 字节整数的最大大小。
所以我的问题来了。我可以以某种方式轻松创建 4 字节范围 offset_ptr,还是我必须在 4 字节宽度整数之间进行转换?
我正在使用 boost::interprocess::offset_ptr<> 模板类专业化,作为我结构中多个字段的类型。不幸的是 offset_ptr 有一个底层指针的大小(在我的例子中是 8 个字节)。但是我确信,它永远不会超过 4 字节整数的最大大小。
所以我的问题来了。我可以以某种方式轻松创建 4 字节范围 offset_ptr,还是我必须在 4 字节宽度整数之间进行转换?
offset_ptr
with default template parameters is
static const std::size_t offset_type_alignment = 0;
template <class T, class DifferenceType = std::ptrdiff_t,
class OffsetType = std::size_t, std::size_t Alignment = offset_type_alignment>
class offset_ptr;
You can change third parameter of offset_ptr
.
#include <iostream>
#include <boost/interprocess/offset_ptr.hpp>
#include <cstdint>
int main()
{
using namespace boost::interprocess;
offset_ptr<int, std::ptrdiff_t, std::uint32_t> offs;
std::cout << sizeof(offs) << std::endl;
}