由于反馈
所以我想教别人如何使用块填充模型进行动态内存分配。这意味着,每个内存块都有前缀,每个内存块都是以4个字节作为后缀,以字节为单位,同时还有一个位(保持在最左边的位中,因为不应该使用)来表示块是空闲的还是分配的。
动态内存分配中的所有内容都涉及对块填充的操作,而我通常认为这些块是双链接列表中的节点。这在技术上是不完全一样的,但是在心态和使用的操作上做一个相当不错的比较就足够了。
我将与一个拥有C++和Java基本编程知识的高中生一起做一个项目(不管怎么说,他都是这么说的)。基本上,他的老师知道他下一年的老师,他们让他在夏天和学生选择的任何人一起做一些编程(我获得了被选中的荣誉)。
无论如何,我决定用一种非常笨重的编程语言(游戏制造者,这是因为我们可以用一个坏掉的对象/指针接口来完成游戏开发)的解决方案是,通过使用数组来实现结构,就好像它是堆空间。因此,我们正在实现DMA算法来处理数组索引。这对我来说并不难,我可能在我的文件中有一些不太合适的代码,可以满足我们的兴趣。
然而,我想给另一个人一个机会去做,因为它是程序的关键子系统之一。这就引出了最后一个问题:
如何解释动态内存分配的概念,以及如何在不依赖指针和链接列表作为概念进行比较的情况下对函数进行编码?
我想也许用答案和步骤来做一些问题集来演示分配器在数组上的动作,但我认为这可能会造成太大的损失,因为我们应该马上开始工作,而不是浪费太多的时间。他们有什么好的方式来描述块垫和东西,即使是一个外行也可能理解?
如果这对背景有帮助的话,我是计算机科学专业的三年级本科生。因此,我没有真正的教学经验。
发布于 2017-05-04 20:50:54
根据我收到的反馈,并思考了一段时间,我意识到我问题中的一些要点,我认为这是一个解决这个问题的办法。
所以,我认为,在我的特殊情况下,最好的行动是让我自己解决这个问题,并把它处理好,而不是坚持让本质上是我队友的人知道这个计划的每一寸。毕竟,如果语言在设计上没有错误,我们就不会浪费时间。那么,为什么还要浪费更多的时间来教别人自己编写代码,然后期望他们自己做一个有用的版本呢?
假设我要教他们,我认为最好的操作方法(因为我们只进行数字交流)是以某种形式创建一些问题,展示原始内存以及当使用不同的函数和输入时它是如何变化的。
发布于 2017-05-02 04:09:32
要解释这个话题,你需要找到一个类似的真实生活的东西,并且会被学生理解。
例如,您可以使用书架和书籍的概念。你可以一个一个地把书放进书架上,然后把它填满,但是当你把书拿出来时,它会留下可以填满其他书的漏洞。有时你有比别人大的书,而且它们不适合那些洞。所以你必须把书放在最后(或者换一个书架),而不是用已经存在的洞。你也可以“压缩”这些书,但这将使任何直接指向这些书的指示失效(即,第三书架左边的第15本书)。(是的,我知道托管语言会处理这个问题,但尽量不要过于技术性)
关于分配的大小的一点实际上只是一个占位符,用来观察书的大小。
https://softwareengineering.stackexchange.com/questions/348173
复制相似问题