全面解析C++内存管理
1. 对齐内存分配
在C++中,可以使用 alignas() 和 new() 、 delete() 操作符来分配单个整数。为了实现这一点,我们可以创建一个新类型 aligned_int ,在类型定义中使用 alignas() 。以下代码展示了如何分配一个对齐的数组:
#include <iostream>
using aligned_int alignas(0x1000) = int;
int main()
{
auto ptr = new aligned_int[42];
std::cout << ptr << '\n';
delete [] ptr;
}
// > g++ -std=c++17 scratchpad.cpp; ./a.out
// 0x5649c0597000
与之前代码中的C API不同, new() 和 delete() (包括C++17中新增的对齐版本)会自动为你计算需要分配的总字节数,从而避免潜在的错误。
2. nothrow版本的new和delete
new() 和 delete() 操作符允许抛出异常。实际上,如果内存分配失败,默认的 new 操作符
超级会员免费看
订阅专栏 解锁全文
1165

被折叠的 条评论
为什么被折叠?



