1 引言

在python内存管理中,有一个block的概念。它比较类似于SGI次级空间配置器。
首先申请一块大的空间(4KB),然后把它切割成一小份(8, 16 一直到512)。
当有内存申请的请求时候,简单的流程是:根据大小找到对应的block,然后在freeblock 上给它一份。
2 问题
整个过程是一种比较自然的slab分配方式。但当我读到这段代码时,却感到疑惑:
static void* _PyObject_Malloc(void* ctx, size_t nbytes)
{
...
pool->freeblock = (block*)pool + pool->nextoffset;
pool->nextoffset += INDEX2SIZE(size);
*(block **)(pool->freeblock) = NULL; // [1]
...
}
freeblock指向空闲的链表,为它赋值很好理解。但是为什么要加上代码1处那一句!
对C比较熟悉的童鞋很容易能看出它的作用,它在为*freeblock赋值为NULL。
但是为什么要这么做?
直到看到内存回收的代码:
static void _PyObject_Free(void* ctx, void*p)
{
...
*(block**)p = lastfree = pool->freeblock;
pool->freeblock = (block*)p;
...
}
回想一下SGI次级空间配置,它需要一个链表,指向block中可用的小块。因为这些快,是离散的,只有用指针才能索引它。
在SGI次级空间配置中,是用一个union,达到了节省空间的目的:有数据时,它存储着真正的数据;没有数据时,它就变成指向下一块可用内存的指针:
union __Obj {
union __Obj* free_list_link;
char client_data[];
};
这样一想,问题就变得很明显了。freeblock指向一个链表,链表的next域就由它自己来索引。
在_PyObject_Free中,内存p是要被回收的,它应该插在freeblock的链表头,freeblock被更新指向它。同时,p指向原来freeblock指向的内容,这是一个很简单的链表插入操作。
这样在遍历的时候,我们就可以用freeblock = * freeblock的方式来工作了。
如下图所示:
相关推荐:
SEO适合-提升网站排名的关键策略,张家口品牌推广营销中心
Chat启用后ESX连不上?解决方法一网打尽!,为什么AI续写这么离谱
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
为什么“搜狗不收录”会成为企业SEO的新挑战?,烤肉店的线下营销与推广
未来写作新方式原创AI文章的无限可能
为什么选择B站VIP?让你畅享更丰富的视听体验,小门类网站seo
ChatGPT网页版为什么不能用了?解析原因与解决办法,女人莫名其妙想ai
seo网络上什么意思,seo表示什么 ,如何避免今日头条ai写作检测
用AI征文工具,轻松创作出精彩文章!
个性化广告:新时代营销的秘密武器,建设经营性网站怎么记账
URL站长的崛起:打造高效网站运营的秘密武器,网站建设费用计算依据
为什么seo吸引人,为什么seo吸引人呢 ,ai路径查找器绘制树
在线AI文章生成:内容创作新革命
SEO关键词的选择步骤:让你的网站在搜索引擎中脱颖而出,ai书法化
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
SEO找出网站流量提升的终极策略,带你走向搜索引擎巅峰!,朝阳模板网站建设价格
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
SEM有哪几个平台?数字营销的多元选择,AI怎么取消移动间距
seo适合什么职业,seo有前途么 ,ai小精灵
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
URL泄露:如何防止信息泄露带来的严重后果,抖音推广营销服务多少钱
ChatGPT403:引领人工智能新时代,颠覆你的工作与生活方式,ai nak
SEO未来:如何在变革中抢占先机,迎接数字营销的新纪元,台州网站建设分析和总结
AI提取文章重要内容:让信息抓取更高效、更精准,松鼠ai 教学
ChatGPT无法完全显示?你可能忽略了这些令人惊讶的细节!,朵朵ai绘画
ChatGPT:人工智能对话新时代的领航者,ai音响华为还是小米好
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
AI免费试用不需要登录:体验智能科技的魅力,轻松开启未来,华为ai身材
AI免费写文章生成器高效写作新革命
SEO表格:优化网站排名的秘密武器,大数据推广营销费用多少
SEO兼职:如何通过SEO兼职实现收入增长与职业突破,濮阳网站建设官网
什么是seo快排,seo快排方案 ,ai剪图形
SEO化学物质:如何在化工行业提升搜索引擎排名和品牌曝光,rack ai
SEO师:如何在数字时代为企业赢得流量与销量,十堰网站关键词优化教程
ChatGPT出现报错503?这些解决办法你必须知道!,粉墨ai说唱
ChatGPT崩了?用户称打开是一片空白,真相竟然如此!,zzz*明星AI换脸
SEO和品牌营销:如何通过搜索引擎优化打造品牌影响力,建邺seo软件
seo用什么论坛引流,seo引流方法 ,ai写作续写神器
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
SEO笔记:如何打造高效的SEO策略提升网站排名,网站优化优质服务方案
ChatGPTWindows版本下载:让AI助力您的工作和生活,ai yamama
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
SEO观看:如何通过优化提升您的网站流量和品牌影响力,龙里网络营销推广
什么是seo艺术,什么是seo seo有何价值 ,ai写作生成器 推荐
seo涉及什么内容,seo主要包括 ,法医使用ai
用AI优化文章,轻松提升内容质量与创作效率
ChatGPT:智能对话开创新时代,ai做渐变直线
GPT哪个模型是最新的?AI语言生成的未来,ai回头