関数を呼び出すと、関数b_destroy
の最後に到達する前にプログラムがクラッシュします。関数は次のようになります。
void b_destroy(Buffer * const pBD){
#ifdef DEBUG
printf("IN DESTROY\n");
printf("BUFFER ADDRESS %d\n",pBD);
printf("HEAD ADDRESS %d\n",pBD->ca_head);
#endif
if(pBD != NULL || pBD->ca_head != NULL){
if (pBD->ca_head != NULL)
free(pBD->ca_head);
if (pBD != NULL)
free(pBD);
}
#ifdef DEBUG
printf("EXITING DESTROY\n");
#endif
}
NULL
メモリの場所を印刷できるので、ポインターがそうではないことはわかっています。クラッシュする理由はありますか?