【发布时间】:2021-03-11 07:58:28
【问题描述】:
在搜索了一下分配(通过malloc 之类的东西)后释放(通过free)的工作原理后,我感到很困惑。
阅读后,消息来源说,在分配内存时,实际上还分配了一个字来存储分配的大小。这就是free 用来释放内存的东西。但是有了这些信息,又出现了另一个问题,我在任何地方都找不到答案:如果分配的内存大小存储在某处,为什么 C 中没有函数或方法可以通过 @ 之类的方式为我们提供分配的内存大小987654324@?
【问题讨论】:
-
您可以自己解析堆或使用具有地址和长度的
struct创建一个malloc包装器。 -
关于为什么某些东西不存在的问题只能由参与语言初始设计的人来回答。但一般来说,要么他们甚至没有考虑这样的功能,要么该功能与其他一些设计目标相冲突。我猜是前者,因为调用
malloc的代码当然知道它需要多少内存。另一方面,如果是后者,我可以想到几个设计目标会与这个特性发生冲突。 -
"它实际上多分配了一个字来存储分配的大小。" --> 存储每个分配的大小未指定,存在其他可能性。
标签: c memory-management malloc free