free函数释放空间报错(用的VS)Output函数中调用的free函数
#include <iostream>#include <cstdlib>
#include <conio.h>
#include <malloc.h>
using namespace std;
typedef int Elemtype;
typedef struct Node {
Elemtype data;
Node* next;
}node,*pnode;
struct point {
pnode head;
pnode tail;
};
point Init() {//初始化队列指针
point p;
p.tail = p.head = nullptr;
return p;
}
void InsertElem(point& p, Elemtype e) {//队尾插入元素
pnode node = (pnode)malloc(sizeof(node));
if (node) {
node->data = e;
node->next = nullptr;
}
if (p.tail) {
p.tail->next = node;
p.tail = node;
}
else {
p.head = p.tail = node;
}
}
void OutputElem(point& p) {//对头输出元素并释放空间
pnode move;
if (!p.head) {
cout << "Queue empty!" << endl;
exit(0);
}
Elemtype temp;
temp = p.head->data;
move = p.head;
p.head = move->next;
if (!p.head) {
p.tail = nullptr;
}
free(move);//这里有问题,去掉就可以运行,
cout << temp << endl;
}
int main() {
point p = Init();
for (int i = 0; i < 10; ++i) {
InsertElem(p, i);
}
for (int i = 0; i < 10; ++i) {
OutputElem(p);
}
OutputElem(p);
return 0;
} {:10_266:} 本帖最后由 jhq999 于 2021-10-22 11:37 编辑
{:5_104:} 本帖最后由 jhq999 于 2021-10-22 11:49 编辑
void InsertElem(point& p, Elemtype e) {//队尾插入元素
// pnode node = (pnode)malloc(sizeof(node));
pnode node = (pnode)malloc(sizeof(Node));//sizeof(node)=4,sizeof(Node)=8;
十分感谢,问题就出现在这里。 {:10_257:}
页:
[1]