运行时错误:“ListNode”类型的空指针内的成员访问

Posted

技术标签:

【中文标题】运行时错误:“ListNode”类型的空指针内的成员访问【英文标题】:runtime error: member access within null pointer of type 'ListNode' 【发布时间】:2021-05-02 09:21:35 【问题描述】:

我花了很多时间在上面,但仍然遇到同样的错误。请有人帮忙。 我已经为一个 leetcode 问题编写了这段代码。(合并两个链表) 看了很多类似的答案,还是想不通

class Solution 
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
    
        ListNode* third = NULL;
        ListNode* last = NULL;
        if (l1 && l2) 
            if (l1->val < l2->val) 
                third = last = l1;
                l1 = l1->next;
                last->next = NULL;
            
            else 
                third = last = l2;
                l2 = l2->next;
                last->next = NULL;
            
        

        while (l1 && l2) 
            if (l1->val < l2->val) 
                last->next = l1;
                last = l1;
                l1 = l1->next;
                last->next = NULL;
            
            else 
                last->next = l2;
                last = l2;
                l2 = l2->next;
                last->next = NULL;
            
        

        if (l1) 
            last->next = l1;
        

        if (l2) 
            last->next = l2;
        

        return third;
    
;

【问题讨论】:

例如假设 l1 和 l2 等于 NULL。你能明白为什么你的函数会在这种情况下崩溃吗?实际上,如果 l1 或 l2 等于 NULL,你会遇到同样的崩溃。 【参考方案1】:

如果两个输入均非空,则仅将 last 设置为非空值。

你需要先检查它,例如

if (last)

    last->next = l1 ? l1 : l2;
 

【讨论】:

以上是关于运行时错误:“ListNode”类型的空指针内的成员访问的主要内容,如果未能解决你的问题,请参考以下文章

如何修复运行时错误:加载类型为'const char的空指针

第 1034 行:字符 9:运行时错误:引用绑定到类型为“int”的空指针 (stl_vector.h)

运行时错误:引用绑定到“std::vector<int, std::allocator<int>>”类型的空指针 (stl_vector.h)

运行时错误:引用绑定到“std::vector<int, std::allocator<int> >”类型的空指针 (stl_vector.h)

检测 boos::variant 向量内的空指针

不评估应用了 sizeof 的表达式是不是使得在 C++ 中取消引用 sizeof 内的空指针或无效指针是合法的?