b_destroy
함수를 호출하면 함수가 끝나기 전에 프로그램이 충돌합니다. 이 기능은 다음과 같습니다 Free() 프로그램이 충돌 함
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
알고있다. 왜 충돌하는지 모든 아이디어?
:
이어쩌면 당신이 뭔가를 원하는 더 많은 정보를 알려주세요 –
포인터가 null이 아니기 때문에 그것이 유효하다는 의미는 아닙니다. –
논리가 잘못되었습니다. 'pBD'가 실제로 null 일 경우 어떻게되는지 생각해보십시오. – Mat