【发布时间】:2014-11-29 16:41:53
【问题描述】:
考虑一个主文件和另一个实现数据结构的文件(例如:链表)。
链表的调用者可以将链表上的对象放在栈上或堆上,我认为这是调用者的责任。
那么在实现链表的时候,它如何知道它是否在堆上呢?考虑一个从列表中删除节点的典型“方法”。链表如何知道它是否应该释放该内存?据我了解,释放堆栈上的某些内容会导致未定义的行为。
因为这是类项目的一部分,我无法传递一些东西 (isOnHeap) 来指示调用者是否已将内存放在堆上(说明:无法在我们的实现中不允许这样做),所以我假设这个问题可能有一个共同的解决方案,特别是考虑到它的常见程度。请注意,链表实现必须处理释放自己的内存(假设这是给定的,因为它的实现对调用者隐藏)。
【问题讨论】:
-
如果这对数据结构代码很重要(但为什么?),那么应该从头开始将其设计到 API 中......
-
标签表示这是一个与 C 相关的问题(在标题中添加了 C)。我确实看到了那个问题。但是,请考虑问题的背景。
标签: c malloc free heap-memory