“免费/删除”如何运作?

时间:2011-06-23 04:22:38

标签: memory free dynamic-memory-allocation

  

可能重复:
  How does delete work in C++?
  C programming : How does free know how much to free?

对于每个动态内存分配,使用'malloc / new',我们有方法'free / delete'来释放分配的内存。

我的问题是,如果内存分配大小在运行时被解除并且内存位置不连续,那么这些内存释放方法如何知道要释放多少内存以及要清除的内存位置是什么?

如果我们只传递指向单个位置的指针,是什么让这些函数有效?

2 个答案:

答案 0 :(得分:0)

他们会记录您在内部分配的内存量。

答案 1 :(得分:0)

malloc/new分配内存时,它还会记录为指定内存位置的指针分配的内存和内存量。 free/delete查找当你给它指针时释放的内存。

这就是为什么你永远不应该试图释放你用“+ =”或类似的东西移动的指针。