reference binding to misaligned address 0x00000001ddb1 for type 'const int',
https://leetcode.com/problems...
题的链接
以下是代码
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int i = 1, v1 = 0, v2 = 0;
ListNode begin(0);
begin.next = NULL;
ListNode *Tag = &begin;
bool rouding = false;
while (true)
{
if (l1 == NULL&&l2==NULL&&rouding!=true)
{
break;
}
int value = (l1 == NULL ? 0 : l1->val) + (l2 == NULL ? 0 : l2->val);
if (rouding)
{
value += 1;
rouding = false;
}
if (value >= 10)
{
rouding = true;
value = value % 10;
}
//new部分
ListNode *v;
v = new ListNode(value);
//malloc部分 (报错)
ListNode *v = NULL;
v = (ListNode *)malloc(sizeof(v));
v->val = value;
v->next = NULL; //此操作也是在线编译报错错误如下
// store to address 0x000000a7de78 with insufficient space for an object of type 'struct ListNode *'
Tag->next = v;
Tag = Tag->next;
l1 = l1==NULL?NULL:l1->next;
l2 = l2==NULL?NULL:l2->next;
}
return begin.next;
}
迷茫2017-04-17 15:23:47
sizeof(v) を sizeof(*v) に置き換えます。
v はオブジェクトではなくポインターです。sizeof(v) は、現在のプラットフォーム上の次のポインターのサイズを返します (32 ビットは 4、64)。 -bit システムは 8 )、
ListNode のサイズにはポインターと int が含まれており、sizeof(v) によって返される値より大きくなければなりません。
したがって、実行時にメモリ アクセス エラーが発生する可能性が非常に高くなります。