Следующий код работает на Linux, но разбился на окнах:Как рекурсивно удалить двоичное дерево на Visual C++ 2013?
#include <iostream>
struct Node
{
Node()
:data_(0), left_(nullptr), right_(nullptr)
{ }
int data_;
Node* left_, *right_;
};
struct Tree
{
Node* root_;
~Tree()
{
release(root_);
}
void release(Node* node)
{
if (node)
{
release(node->left_);
release(node->right_);
delete(node);
}
}
};
int main()
{
{
auto tree = Tree();
}
std::cout << "exit\n";
return 0;
}
Выход на Ubuntu 14.04 LTS с помощью г ++ 4.82:
выхода
Разбился на Windows 8 с помощью видео Студия 2013 года, пожаловалась:
Нарушение прав доступа r eading location 0xCCCCCCD0.
Необработанное исключение в 0x009A5CCC: 0xC0000005: Место для обнаружения нарушения доступа 0xCCCCCCD0.
Как это понять? Как это исправить?
Вы должны использовать 'зЬй :: unique_ptr' вместо 'Node *' –