今天写到这个部分的时候,不知道为什么,一直出现错误:
先把我的源代码放上来:
#include<stdio.h>
#include <stdlib.h>
#define SIZE 10
#define OK 1
#define FALSE 0
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node* next;
}Qnode,*QnodePtr;
typedef struct
{
QnodePtr front;
QnodePtr rear;
}LinkQuene;
//初始
int Quene_init(LinkQuene* L)
{
L->front = (QnodePtr)malloc(sizeof(Qnode));
if (!L->front)
{
return FALSE;
}
L->rear = L->front;
L->front->next = NULL;
return OK;
}
//进入队列(尾插法)
void eQuenein(LinkQuene* L)
{
int i = 0;
int num = 0;
printf("请输入你要入队的个数>");
scanf("%d", &num);
for (i; i < num; i++)
{
QnodePtr p = (ElemType*)malloc(sizeof(ElemType));
printf("请输入元素");
scanf("%d", &p->data);
p->next = NULL;
L->rear->next = p;
L->rear = p;
}
}
//清空队列
void Quene_clear(LinkQuene* L)
{
if (!L->front)
{
return FALSE;
}
else
{
while(L->front)
{
L->rear = L->front->next;
free(L->front);
L->front = NULL;
L->front = L->rear;
}
}
}
int main()
{
LinkQuene s;
Quene_init(&s);
eQuenein(&s);
printf("\n");
Quene_clear(&s);
return 0;
}
在刚开始创建的项目1中运行,就成了这样:
反复调试,在第二个循环处就开始报错:CRT检测到应用程序在堆缓冲结束后写入内存;
这个错误也很懵逼,检查了指针也不存在越界的问题;
后面开始重新再一个新项目下重新运行,一点问题也没有:
还是搞不懂发生这个错误的原因;
希望能有大佬帮忙看看