一、leetcode报错之:member access within misaligned address
在leetcode上做一个道题,报错如下:
Line 70: Char 15: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'struct ListNode', which requires 8 byte alignment (ListNode.c)
0xbebebebebebebebe: note: pointer points here
<memory cannot be printed>
检查了代码,并且拷贝到自己机器上运行,都是OK的。
后来上网查了一下,原来是因为链表节点中有指针,申请空间后,这个指针没有赋值为NULL导致访问时next域的值还是垃圾数据,导致访问内存出错。
struct ListNode {
int val;
struct ListNode *next;
};
解决办法:
1. malloc后,对指针进行赋值操作。
2. 时用calloc接口,直接清空分配的空间。
二、 头文件有引发的错误。
问题现象:在项目中引用了一个第三方的动态库,使用了里面的API接口。编译通过。在运行时出现段错误,通过gdb查看函数调用栈,显示死在libc里面,无可见符号。
仔细检查代码,发现所有调用过程都正确,参数也正确。最后通过和demo的代码比对,发现没有没有包含头文件,而所使用的函数是有返回值的。添加头文件后,就