![]() |
1
8
分配
危险是当您的头的对齐要求小于实现的最大对齐要求时。那么它的大小可能不是最大对齐的倍数,所以当您尝试转换/使用
基本上,我知道有三个技巧可以确保标头不会导致未对齐:
或者,您可以定义
[*]一个常见的例外是SIMD类型过大。因为它们是非标准的,而且仅仅因为它们就对齐每个分配是浪费的,所以它们会被放在一边,您需要为它们提供特殊的分配函数。 |
![]() |
2
2
当对象跨越CPU缓存线边界时,错误对齐对象可能会非常昂贵。跨两条缓存线的double的读写时间是double的三倍。 |
![]() |
3
2
有两种类型的工具来帮助编写正确的内存分配器(C++ 0x),它们可以在
和他们两个一起工作,你会得到你需要的。 但是,您的设计稍微偏离了基准,这并不是很重要,因为您的标题与存储的对象没有相同的对齐要求(通常)。
最后,你也可以成功,没有所有这些,一些指针算法,但因为它提供。。。。 |
![]() |
5
1
据我所知,boost::pool是基于alexandrescu在《现代c++设计》一书中解释的“小对象分配器”。我必须读这本书(因为你写这些东西也是为了学习) |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |