→ tomap41017:嗯,看code我理解無誤的話,是跟您的解釋一樣的 12/24 23:10
要用linked list 實做 pop的問題 要把pop出的資料放到data變數裡
typedef struct E {
struct E *next;
void *value;
} E;
bool pop( E **stack, void **data ){
E *elem;
if (!(elem = *stack)) return false;
*data = elem->value;
*stack = elem->next;
delete elem;
return true;
}
我的理解是:
delete elem只會delete掉一層, 也就是 *value所指的資料是仍然存在
這也是為什麼可以把他assign給*data 給return回去
也就是說 就算delete掉E 的object還是會剩一堆value資料在記憶體那邊沒清掉
這樣對嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.111.1