我一直在看香草薩特的CppCon 2016的談話中,他舉了一個例子around 37 minutes in,這樣的事情:什麼是C++中的回調地獄,爲什麼它會泄漏內存?
void f(shared_ptr<T> & ptr)
{
obj.on_draw([=]() { ... }
}
然後他說,
我聽說它被稱爲回調地獄,在那裏你註冊一個回調和 它有一個強大的擁有者 - 它恰好是一個垃圾收集指針 但它是一個強大的擁有者 - 但你永遠不會擺脫它,它的 只是永遠存儲在那裏,現在對象將永遠不會消失。
所以他說它被稱爲回調地獄,它會泄漏物體。 但我不太明白這段代碼有什麼問題,以及它爲什麼會泄漏。有人可以向我解釋這一點嗎?
我已經看過其他人在stackoverflow上的答案,但他們似乎都是關於併發。
必須談論內存所有權。由於C中沒有垃圾收集器,所以很難知道何時/誰必須釋放分配的對象。不過,'unique_ptr'可以提供幫助。 –
如果它是公開的,請鏈接談話。無論是否,請說出幻燈片#或演示文稿中的什麼時間。 –
@RawN:這不是無關緊要的,它只是沒有足夠的瞭解薩特博士所說的話,任何人都可以回答,而無需去查找和觀看整個演講。 –