考慮一個主文件,以及另一個實現數據結構的文件(比如:鏈表)。數據結構實現是否可以知道它是否在堆上?
鏈表的調用者可以將對象放在堆棧或堆上的鏈表上,我認爲這是調用者的責任。
所以當實現鏈表時,它是如何知道它是否在堆上?考慮從列表中移除節點的典型「方法」。鏈表如何知道它是否應該釋放內存?根據我的理解,釋放堆棧上的東西會導致未定義的行爲。
因爲這是一個類項目的一部分,我無法傳遞一些東西(isOnHeap)來表明調用者是否把內存放在堆上(澄清:因爲在我們的實現中不能這樣做) ,所以我假設這個問題可能有一個共同的解決方案,特別是考慮它會有多普遍。請注意,鏈表實現必須處理自己的內存釋放(假設這是由於它的實現對調用者隱藏而給出的)。
如果這是數據 - 在某種程度上重要結構代碼(但是爲什麼?),那麼應該從頭開始設計API。 – user2864740 2014-10-05 02:16:40
該標記指示這是一個與C相關的問題(在標題中添加了C)。我確實看到了這個問題。但是,請考慮問題的背景。 – 2014-10-05 02:24:59