free()函数如何获取释放的内存大小.
发布时间
阅读量:
阅读量
------------------------------------------------------------
author: hjjdebug
date: 2024年 07月 25日 星期四 11:32:19 CST
decription: free() 从哪里知道释放的内存大小.
------------------------------------------------------------
通过malloc()函数所申请的内存块,在使用完毕后,通常会调用free()函数进行释放操作。然而,free()函数在调用时仅接收一个地址参数,那么系统是如何确定需要释放的具体内存大小呢?
事实上,操作系统在为每一块分配的内存区域附加了一个长度为16字节的头部信息,并且最终分配的总大小会按照16字节进行对齐处理。例如:
当申请1字节内存时,系统实际分配了16+1=17字节,并将其对齐至32字节,计算公式为(17+15)/16*16=32;
当申请8字节内存时,系统实际分配了16+8=24字节,并将其对齐至32字节,计算公式为(24+15)/16*16=32;
当申请16字节内存时,系统实际分配了16+16=32字节,并将其对齐至32字节,计算公式为(32+15)/16*16=32;
当申请32字节内存时,系统实际分配了16+32=48字节,
全部评论 (0)
还没有任何评论哟~
