/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
** ListNode* l = new ListNode();**
int c=0; //进位位
int val =0; //存放当前位置运算所得
ListNode* p1 = l1;
ListNode* p2 = l2;
ListNode* p = l;
if(p1==nullptr)
{
return l2;
}
if(p2==nullptr)
{
return l1;
}
//处理完较短的表后会跳出循环
while(true)
{
val =p1->val + p2->val+c;
p->val = val % 10;
c = val / 10;
if(p1->next!=nullptr&&p2->next!=nullptr)
{
p1 = p1->next;
p2 = p2->next;
ListNode node;
ListNode* temp = &node;
p->next = temp;
continue;
}
break;
}
//继续用进位位处理较长的表,不知道就直接两个指针一起处理
while(p1->next!=nullptr)
{
ListNode node;
ListNode* temp = &node;
p->next = &node;
p = temp;
p1=p1->next;
val = p1->val + c;
p->val = val%10;
c = val/10;
//有进位未处理时
if(c!=0&&p1->next==nullptr)
{
ListNode node2;
temp = &node2;
temp->val=c;
p->next = temp;
}
}
while(p2->next!=nullptr)
{
ListNode node;
ListNode* temp = &node;
p->next = temp;
p = temp;
p2=p2->next;
val = p2->val + c;
p->val = val%10;
c = val/10;
//有进位未处理时
if(c!=0&&p2->next==nullptr)
{
ListNode node2;
temp = &node2;
temp->val=c;
p->next = temp;
}
}
return l;
}
};
Line 15: Char 16: runtime error: member access within misaligned address 0x00000000000d for type 'ListNode', which requires 8 byte alignment (ListNodeUtils.cpp)
0x00000000000d: note: pointer points here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ListNodeUtils.cpp:24:16
请大家帮忙看下,不懂为什么会出现member access within misaligned address的问题,查了之前的类似问题,但是都是说结构体内的指针没有初始化,但是尝试之后还是一样的问题,而且结构体定义中不是已经有了初始化的参数列表么?