我在这里发布这个作为最后的手段。我完全卡住了,不知道该把它带到哪里。有了这个问题,我正在寻找方向,而不是答案。
我有一份家庭工作任务,实际上似乎是一项非常常见的任务。问题是here at page 11。这不是我的任务,但我在谷歌上找到的这个与我的相似。
我的导师已经给出了指导,我们需要查看的相关信息是标题位。
据说我们正在执行以下操作:free(0x400b010)
0x400b010
包含0x400b601c
。
如果我将这个十六进制分解为二进制 - 特别是最后一个双字,我得到以下
0x1c = 0001 1100
整件事:
0x400b601c = 0100 0000 0000 1011 0110 0000 0001 1100
根据我的意图,1c
表示此内存已经空闲。因为最后一位是0.在这种情况下,free的行为将是未定义的。
但我的火车是否准确?我是否正朝着正确的方向前进?
答案 0 :(得分:3)
你总是要传递free()
从malloc
或其中一个亲戚那里获得的指针。想一想你如何使用这些指针。
问自己的问题:
malloc
返回的指针可以指向标题吗?到页脚?为什么或为什么不呢?BTW--链接文档只描述堆分配器可能运行的几种方式之一。