今天遇到了一个 leetcode报的错:
Line 48: Char 21: runtime error: store to misaligned address 0x61400000009e for type 'char *', which requires 8 byte alignment [solution.c]
0x61400000009e: note: pointer points here
61 00 62 00 be be be be be be be be be be be be be be be be be be be be be be be be be be be be
^
对应的代码是:
void * alloc_buf(int size)
{
void *tmp = g_buffer + g_idx;
g_idx += size;
return tmp;
}
应该是这个函数返回的地址没有按照8字节对齐。
修改如下:
void * alloc_buf(int size)
{
size = (size + 0x7) & (~0x7);
void *tmp = g_buffer + g_idx;
g_idx += size;
return tmp;
}
问题解决了