c++内存示例002分配器,假定对齐,对齐分配

Posted 周三石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++内存示例002分配器,假定对齐,对齐分配相关的知识,希望对你有一定的参考价值。

#包含 <内存>
#包含 <io流>
#包含 <串>

()
{
::分配器<> a1; // 整 的默认分配器
* a = a1.分配(1); // 一个 整 的空间
a1.构造(a, 7); // 构造 整
输出 << a[0] << '\n';
a1.回收(a, 1); // 解分配一个 整 的空间

// 串 的默认分配器
::分配器<> a2;

// 同上,但以 a1 的重绑定获取
推导(a1)::重绑定<>::其他 a2_1;

// 同上,但通过 分配器特征 由类型 a1 的重绑定获取
分配器特征<推导(a1)>::重绑定分配<> a2_2;

* s = a2.分配(2); // 2 个 串 的空间

a2.构造(s, "福");
a2.构造(s + 1, "条");

输出 << s[0] << ' ' << s[1] << '\n';

a2.消灭(s);
a2.消灭(s + 1);
a2.回收(s, 2);
}
7
福 条
 f(* p) {
* p1 =::假定对齐<256>(p);
// 用 p1 而非 p ,以确保从对齐假设受益.
// 然而,若 p 未对齐则程序有未定义行为,无关乎是否使用 p1 .
}
#包含 <c标io>
#包含 <c标准库>

()
{
* p1 = 静转<*>(分配(10*的大小 *p1));
打印格式("默认-对齐 地址: %p\n", 静转<*>(p1));
释放(p1);

* p2 = 静转<*>(::对齐分配(1024, 10*的大小 *p2));
打印格式("1024-字节 对齐 地址: %p\n", 静转<*>(p2));
释放(p2);
}
默认-对齐 地址:   0x2221c20
1024-字节 对齐 地址: 0x2222400


以上是关于c++内存示例002分配器,假定对齐,对齐分配的主要内容,如果未能解决你的问题,请参考以下文章

c++内存示例001对齐,坏弱针

自定义堆栈分配器中的 C++ 内存对齐

分配初始化的、对齐的内存

c++类型内存分配规则

c++类型内存分配规则

为 SIMD 分配内存对齐的缓冲区; |16 如何给出 16 的奇数倍数,为啥要这样做?