Advertisement

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)

还没有任何评论哟~