Я натолкнулся на часть кода следующим образом:
/* Allocate memory for _ptr */
if(*((void **) &(_ptr)) != (void *) NULL)
{
/* free _ptr */
}
Чем он отличается от следующего?
/* Allocate memory for _ptr */
if (_ptr != NULL )
{
/* free _ptr */
}
EDIT: _ptr может быть любым типом, на самом деле это макрос следующим образом:
#define RETURN_MEM_CHK(_ptr) \
{if(*((void **) &(_ptr)) != (void *) NULL){/* free _ptr */}
Извините, что вы путаете.