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が出力されると仮定すると、インライン Xbbb
を実行した直後にセグメンテーション違反が通知されるだけですprintf()
。現在の代わりに「printf("a")」と入力すると、「a」は出力printf()
されません。まったく。それは本当に奇妙です。それは印刷します:
curr is 0x86be000 and ptr is 0x86be000
それでも、終了してすぐにセグメンテーション違反をスローします。変数head
は、そのファイル内の静的変数です。どこに問題があるのか本当に知りたいのですが、それは本当に奇妙です。ヘッダー ファイルのステートメントは次のとおりです。
void free(void* ptr);
それと同じくらい簡単ですが、ここに何か問題がありますか? 完全なコードはここで入手できますが、関連しているとは思えません。プログラムは、少なくとも「aaa」または「bbb」のいずれかを出力する必要がありますが、それは行いません。何か案が?私は本当に必死です。