小编hai*_*yak的帖子

析构函数中无意的递归调用

我创建了一个包含链表的类,这个类需要有一个析构函数来删除链表,但是因为delete方法本身调用析构函数,所以我最终会在无限递归调用中执行.

这是代码: -

PolynomialNode::~PolynomialNode()
{
    /*PolynomialNode* current_node_ptr = link;
    PolynomialNode* header_ptr = link;
    int index = 0;
    if( link != NULL)
    {
        while( current_node_ptr != NULL)
        {
            index++;
            current_node_ptr = current_node_ptr->get_link();

        }

        delete_nodes( &header_ptr, 0, index);
    } */
    PolynomialNode* current_node_ptr = link;
    PolynomialNode* copy_ptr;
    while( current_node_ptr != NULL)

    {
        copy_ptr = current_node_ptr->get_link();
        current_node_ptr->set_link(NULL);
        delete current_node_ptr;
        current_node_ptr = copy_ptr;
    }
}
Run Code Online (Sandbox Code Playgroud)

注意我尝试使用递归调用 - 有意删除链表,我仍然遇到同样的问题.

任何帮助将非常感激.

注意:我知道这是一个递归调用,因为当我单步执行调试器时,我可以看到它正在发生.

c++

2
推荐指数
1
解决办法
1282
查看次数

标签 统计

c++ ×1