暂无个人介绍
> 本文为《C++ 中的内存对齐》系列之下篇,[上篇](https://ata.alibaba-inc.com/articles/243681)介绍内存对齐的理论基础,建议优先食用~ ### TL;DR - 编译器可能会在结构体中填充字节,以满足所有成员的对齐要求; - 可以通过预处理指令 `#pragma pack` 及 `alignas` 标识符自定义内存对齐; - 对于栈上及静态变量,编
> 本文作为上篇主要介绍内存对齐的理论基础,后续的下篇将侧重于 C++ 语言层面的实践,敬请期待! ### TL;DR - 处理器以若干字节的块而不是单字节的粒度访问内存,因此对于未对齐的内存需要额外的访存及计算开销,导致性能更差。 - 原子操作和矢量运算指令要求内存地址必须是对齐的,否则可能导致程序死循环和数据错误。 - 编译器通过 padding 自动对结构中的字段进行对齐,用以向后兼容以
### TL;DR - 使用无状态的函数对象作为 std::unique_ptr 的删除器不会占用额外的内存空间;而使用函数指针或有状态的函数对象则会增加 std::unique_ptr 对象的大小,其中 std::function 的内存开销最大,应尽量避免使用。 - MSVC 使用 compressed pair 来存储 std::unique_ptr 的原始指针和删除器,利用 Empty