0

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」のいずれかを出力する必要がありますが、それは行いません。何か案が?私は本当に必死です。

4

1 に答える 1