堆&免费的家庭作业

时间:2009-08-15 20:31:34

标签: c heap free

我在这里发布这个作为最后的手段。我完全卡住了,不知道该把它带到哪里。有了这个问题,我正在寻找方向,而不是答案

我有一份家庭工作任务,实际上似乎是一项非常常见的任务。问题是here at page 11。这不是我的任务,但我在谷歌上找到的这个与我的相似。

我的导师已经给出了指导,我们需要查看的相关信息是标题位。

据说我们正在执行以下操作:free(0x400b010)

0x400b010包含0x400b601c

如果我将这个十六进制分解为二进制 - 特别是最后一个双字,我得到以下

0x1c = 0001 1100

整件事:

0x400b601c = 0100 0000 0000 1011 0110 0000 0001 1100

根据我的意图,1c表示此内存已经空闲。因为最后一位是0.在这种情况下,free的行为将是未定义的。

但我的火车是否准确?我是否正朝着正确的方向前进?

1 个答案:

答案 0 :(得分:3)

你总是要传递free()malloc或其中一个亲戚那里获得的指针。想一想你如何使用这些指针。

问自己的问题:

  • malloc返回的指针可以指向标题吗?到页脚?为什么或为什么不呢?
  • 您正在查看上面的标题内容吗?
  • 标题可能在哪里?

BTW--链接文档只描述堆分配器可能运行的几种方式之一。