我執行在C通用鏈表內存管理,同時實現用C
struct Node
{
void* data;
struct Node* next;
};
是更好地讓有關分配和釋放用戶擔心什麼數據將指向一個通用的鏈表庫,或我們應該自己做嗎?如果留給用戶,他們可能會將堆棧對象存儲到列表中,以後可能會導致問題。我只是想知道哪種設計更好。
我執行在C通用鏈表內存管理,同時實現用C
struct Node
{
void* data;
struct Node* next;
};
是更好地讓有關分配和釋放用戶擔心什麼數據將指向一個通用的鏈表庫,或我們應該自己做嗎?如果留給用戶,他們可能會將堆棧對象存儲到列表中,以後可能會導致問題。我只是想知道哪種設計更好。
拇指的一般規則是通常:誰分配內存 - 負責釋放它。
就你而言,你應該照顧自己的節點,用戶應該負責data
。
這是有道理的,因爲:
data
- 它可能是一個複雜的類型,需要在內部領域釋放爲好,或者它可能如果試圖將指向堆棧中分配空間,這將導致錯誤釋放它。
首先不要使用'void *'。 –
@EdHeal - 爲什麼不呢? –
用戶可能想要存儲堆棧對象,爲什麼不呢。或者是靜態的。 – nshy