C
逃课的小学生
这个作者很懒,什么都没留下…
展开
-
libc 2.27 堆管理机制
由于在libc2.26之后引入tcachebins,所以堆分配机制和之前不太相同tcachebins——tcachebins是一个长度为64的字节数组,每个字节数组对应一条链表。所以tcachebins只能存放0x0-0x400大小的堆,且每个链表长度为7。并且类似于fastbins,是一个单链表。在释放大小为0x0-0x400大小的堆的时候,首先会被释放入对应长度tcachebins对应的链表中,当长度超出7后,再放入fastbin或unsortbins中。malloc的时候当发现malloc对应大小原创 2020-10-06 20:58:10 · 1119 阅读 · 0 评论 -
Built-in Functions for Memory Model Aware Atomic Operations
下面的内置函数大致符合C++ 11内存模型的要求。它们都是通过前缀'__atomic'来标识的,而且大多数都是重载的,因此它们可以处理多种类型。这些函数用于替换传统的“__sync”内置函数。主要区别在于请求的内存顺序是函数的参数。新代码应该始终使用“__atomic”内置代码,而不是“__sync”内置代码。注意,“__atomic”的构建假设程序将符合C++ 11内存模型。特别是,他们...原创 2019-11-04 11:45:52 · 960 阅读 · 0 评论 -
C attribute
目录C++ attribute定义解释标准属性gnuattribute对变量进行属性设置aligned(alignment)packed对函数进行属性设置format (archetype, string-index, first-to-check)noreturnweakweakref,weakref ("target")hot...原创 2019-10-24 13:16:29 · 532 阅读 · 0 评论