下面的代碼導致運行時錯誤。顯然,當unique_ptr
a
超出範圍時,它會嘗試刪除已被刪除的內存,因此會導致堆問題。我的問題是我在X行應該做什麼更改,因爲它們共享相同的內存,並且即使在使用delete
調用之後也不會有任何運行時錯誤。運行時錯誤與unique_ptr
#include <iostream>
#include <memory>
using namespace std;
int main()
{
int* p = new int (10);
unique_ptr<int> a (p); // Line X
delete p;
return 0;
}