#include <stdio.h>
#include <stdlib.h>
typedef int Elemtype;
typedef struct node{
Elemtype elem;
struct node *next;
}*top;
int m=sizeof(struct node);
struct node *Push(struct node *top,Elemtype x){
struct node *p;
p=(struct node *)malloc(m);
p->next=top;
top=p;
p->elem=x;
return top;
}
struct node *Pop(struct node *top,Elemtype &x){
if(top==NULL) return 0;
struct node *p;
p=top;
x=p->elem;
top=top->next;
delete p;
return top;
}
Elemtype GetTop(struct node *top){
if(top==NULL) return -1;
int x=top->elem;
return x;
}
int main(){
struct node *p;
int x=0,y=0;
Push(p,2);
Push(p,34);
Pop(p,x);
printf("%d",x);
y=GetTop(p);
return 0;
}
然后用g++编译通过,但是运行程序时出现提示:
LinkStack(14073,0x7fff7729d300) malloc: * error for object 0x7fff55c40b00: pointer being freed was not allocated
* set a breakpoint in malloc_error_break to debug
Abort trap: 6
请问这是怎么回事?
#include <stdio.h>
#include <stdlib.h>
typedef int Elemtype;
typedef struct node{
Elemtype elem;
struct node *next;
};
struct node * top;
int m=sizeof(struct node);
struct node *Push(Elemtype x){
struct node *p;
p=(struct node *)malloc(m);
p->next=top;
top=p;
p->elem=x;
return top;
}
struct node *Pop(Elemtype &x){
if(top==NULL) return 0;
struct node *p;
p=top;
x=p->elem;
top=top->next;
delete p;
return top;
}
Elemtype GetTop(){
if(top==NULL) return -1;
int x=top->elem;
return x;
}
int main(){
top=(struct node *)malloc(sizeof(struct node));
int x=0,y=0;
Push(2);
Push(34);
Pop(x);
printf("%d",x);
y=GetTop();
return 0;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。