-3
所以我的移動語義的理解是,這代碼:爲什麼在unique_ptr上使用std :: move會毀掉它?
#include <iostream>
#include <memory>
class hello {
public:
~hello() {
std::cout << "destroyed" << std::endl;
}
hello() {
std::cout << "constructred" << std::endl;
}
};
void takecontrol(std::unique_ptr<hello>&& ptr) {
ptr.release();
}
int main()
{
auto ptr = std::make_unique<hello>();
}
應該創建一個內存泄漏,只打印「構成的。」
尚未運行時(http://cpp.sh/2upqq)它破壞了對象!
對我來說,它似乎應該被搬進ptr
takecontrol
然後釋放,然後不刪除所以它不應該被銷燬。
我缺少什麼?
「我錯過了什麼?」可能會打電話給'takecontrol'嗎? – tkausl
你永遠不會調用'takecontrol'。 –
您的程序調用'takecontrol':http://cpp.sh/9qh3u – chtz