考虑一个主文件,以及另一个实现数据结构的文件(比如:链表)。数据结构实现是否可以知道它是否在堆上?
链表的调用者可以将对象放在堆栈或堆上的链表上,我认为这是调用者的责任。
所以当实现链表时,它是如何知道它是否在堆上?考虑从列表中移除节点的典型“方法”。链表如何知道它是否应该释放内存?根据我的理解,释放堆栈上的东西会导致未定义的行为。
因为这是一个类项目的一部分,我无法传递一些东西(isOnHeap)来表明调用者是否把内存放在堆上(澄清:因为在我们的实现中不能这样做) ,所以我假设这个问题可能有一个共同的解决方案,特别是考虑它会有多普遍。请注意,链表实现必须处理自己的内存释放(假设这是由于它的实现对调用者隐藏而给出的)。
如果这是数据 - 在某种程度上重要结构代码(但是为什么?),那么应该从头开始设计API。 – user2864740 2014-10-05 02:16:40
该标记指示这是一个与C相关的问题(在标题中添加了C)。我确实看到了这个问题。但是,请考虑问题的背景。 – 2014-10-05 02:24:59