這是我的代碼,我將值賦給樹的節點。我能夠很好地分配,直到樹的左右孩子。但是,當我嘗試使用左 - >左的孩子的根,它會給我訪問衝突錯誤。爲什麼代碼在使用unique_ptr時崩潰,原始指針工作正常?
Trees.exe中的0x00DE5CC3未處理的異常:0xC0000005:訪問 違規讀取位置0x00000004。
準確的錯誤在線,unique_ptr<node> (r->left->left) = newNode(4);
。
我使用unique_ptr
,如果我使用原始指針,一切都按預期工作。
以下是我的代碼,
using std::cout;
using std::endl;
using std::unique_ptr;
struct node
{
int data;
node * left;
node * right;
};
unique_ptr<node> newNode (int i)
{
unique_ptr<node> n (new node);
n->data = i;
n->left = nullptr;
n->right = nullptr;
return n;
}
int main(int argc, char* argv[])
{
unique_ptr<node> r = newNode(1);
unique_ptr<node> (r->left) = newNode(2);
unique_ptr<node> (r->right) = newNode(3);
unique_ptr<node> (r->left->left) = newNode(4);//this line craches
unique_ptr<node> (r->left->right) = newNode(5);
return 0;
}