This must have been debated a million times. I am personally a fan of this type of destructor (setting pointer to NULL), but the problem is that it is not compatible with free. so this sould be void QueueDestroy(Queue *q)