我得到了segmentation fault (core dumped)
以下代码的和平(我正在实施malloc()
,free()
和realloc()
):
void free(void* ptr)
{
void* curr = head;
void* before = NULL;
int isLegal = 0;
/*Line X*/printf("curr is %p and ptr is %p\n", curr, ptr);
if(curr == ptr)
{
printf("aaa");
}
else
{
printf("bbb");
}
/*Some more code that actually frees the pointer and not relevant here*/
}
现在,您假设它会打印aaa
or bbb
,它只是在执行行 X 后立即宣布分段错误printf()
。如果我键入“printf("a")" 而不是当前printf()
它不会打印 'a'一点也不。这真的很奇怪。它打印:
curr is 0x86be000 and ptr is 0x86be000
但它会立即退出并引发分段错误。该变量head
是该文件中的静态变量。我真的很想知道问题出在哪里,真的很奇怪。这是头文件中的语句:
void free(void* ptr);
就这么简单,你看到这里有什么问题吗?完整的代码可在此处获得,但我怀疑它是否相关,该程序至少应该打印“aaa”或“bbb”,但它不会这样做。任何想法?我真的很绝望。