Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C “怎么做?”;“免费”;知道需要释放多少字节_C - Fatal编程技术网

C “怎么做?”;“免费”;知道需要释放多少字节

C “怎么做?”;“免费”;知道需要释放多少字节,c,C,可能重复: 在C语言中,函数malloc接受一个参数,指定要分配的字节数。 然而,free函数不接受任何参数,只接受一个指针。 free如何知道它必须释放多少字节?分配大小等信息保存在内存分配器本身中 在内部,有一些数据结构保存着所有活动内存分配、大小和地址的列表。它的具体工作原理相当复杂,因为有许多不同的内存分配算法适用于不同的用途和分配大小 通常情况下,大小作为固定偏移量存储在malloc()返回的地址的正下方,但这只是一个实现细节。一种相当常见的方法是,分配将分配增加sizeof(siz

可能重复:

在C语言中,函数malloc接受一个参数,指定要分配的字节数。 然而,free函数不接受任何参数,只接受一个指针。
free如何知道它必须释放多少字节?

分配大小等信息保存在内存分配器本身中

在内部,有一些数据结构保存着所有活动内存分配、大小和地址的列表。它的具体工作原理相当复杂,因为有许多不同的内存分配算法适用于不同的用途和分配大小


通常情况下,大小作为固定偏移量存储在malloc()返回的地址的正下方,但这只是一个实现细节。

一种相当常见的方法是,分配将分配增加sizeof(size\t),并在开始时存储长度,然后返回指向分配的其余内存的指针。释放记忆只需要查看隐藏的长度