首页 > 解决方案 > 我在 while 循环中创建了一个 tmp 结构,但是发生了一些错误,看起来 tmp 结构在一个循环结束时不是空闲的

问题描述

1我在while循环中创建了一个tmp结构,但是发生了一些错误,看起来tmp结构在一个循环结束时不是空闲的,但是当我创建一个结构指针时,它可以工作。

class Solution {

公共:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { struct ListNode 节点;

    ListNode* head= &node;
    ListNode* h=head;
    int sum=0;
    bool carry=false;
    while(l1!=NULL||l2!=NULL)
    {
        sum=0;
        if(l1!=NULL)
        {
            sum+=l1->val;
            l1=l1->next;
        }
        if(l2!=NULL)
        {
            sum+=l2->val;
            l2=l2->next;
        }
        if(carry)
            sum++;
        struct ListNode tmp;
        tmp.val=sum%10;
        tmp.next=NULL;
        // cout<<&tmp<<endl;
        // h->next=new ListNode(sum%10);
        h->next=&tmp;
        h=h->next;
        
        // delete h->next;
        carry=sum>=10?true:false;
    }
    if(carry)
    {
        h->next=new ListNode(1);
    }
    return head->next;

}

};

标签: c++memorystruct

解决方案


我认为这可能是因为您在循环tmp内的堆栈上创建,然后将其地址分配给. 循环迭代结束后,不再在范围内,但您已在. 您需要在堆上创建才能使其正常工作,正如您通过将其创建为我怀疑的指针所发现的那样。whileh->nextwhiletmphtmp


推荐阅读