退出代码33221225477

程序能通过编译,但运行不了,退出时返回:
Process exited after 2.344 seconds with return value 3221225477
查了资料,可能是野指针的问题,但我检查了半天也不知是哪里出错。

#include <iostream>
typedef struct Node{
    int data;
    struct Node * next;
}LinkNode;//定义链队结点类型
typedef struct{
    LinkNode * front ,* rear;//队头,队尾指针
}LinkQueue;//定义链队
void initQueue(LinkQueue *&q);
bool isEmpty(LinkQueue *q);
bool enQueue(LinkQueue *&q,int e);
bool deQueue(LinkQueue *&q,int &e);
bool destry(LinkQueue *&q);
int main(){
    LinkQueue *q;
    int e = 2;
    initQueue(q);
    //enQueue(q,2);
    std::cout << e << std::endl;
    //enQueue(q,7);
    //enQueue(q,4);
    //enQueue(q,-1);
    //deQueue(q,e);
    //std::cout << q->front->data <<' '<< e;
    destry(q);
    return 0;
}
void initQueue(LinkQueue *&q){
    q->front = q->rear = new LinkNode;//创建头结点,初始时尾指针指向头结点
    q->front = NULL;
}
bool isEmpty(LinkQueue *q){
    return  q->front == q->rear;
}
bool enQueue(LinkQueue *&q,int e){
    LinkNode * p = new LinkNode;
    p->data = e;
    p->next = NULL;
    q->rear->next = p;//插入尾结点后
    q->rear = p;
    return true;
}
bool deQueue(LinkQueue *&q,int &e){
    if(q->rear == q->front)
        return false;
    LinkNode * p = q->front->next ;
    p->data = e;
    q->front->next = p->next;
    if(q->rear == p)
        q->rear = q->front;
    delete p;
    return true;
}
bool destry(LinkQueue *&q){
    while(q->front){
        q->rear = q->front;
        delete q->front;
        q->front = q->rear;
    }
    return true;
}

17行初始化就有问题,p都没分配空间啊