#include
#include
#include
#defineOVERFLOW3
#defineOK1
#defineERROR-1
#defineTRUE1
#defineFALSE-1
#defineSTACK_INIT_SIZE100
#defineSTACKINCREMENT10
typedefstruct{
int*base;
int*top;
intstacksize;
}SZZH;
intInitStack(SZZHL)
{
L.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!L.base)exit(OVERFLOW);
L.base=L.top;
L.stacksize=STACK_INIT_SIZE;
returnOK;
}
intPush(SZZHL,inte)
{
if(L.top-L.base>=L.stacksize)
{
int*p;
p=L.base;
p=(int*)realloc(L.base,(L.stacksize+STACKINCREMENT)*sizeof(int));
if(!(p))exit(OVERFLOW);
L.base=p;
L.top=L.base+L.stacksize;
L.stacksize=L.stacksize+STACKINCREMENT;
}
*(L.top++)=e;
returnOK;
}
intGettop(SZZHL,intf)
{
if(L.base==L.top)returnERROR;
f=*(L.top-1);
returnOK;
}
intPop(SZZHL,intw)
{
if(L.base==L.top)returnERROR;
w=*(--L.top);
returnOK;
}
voidmain()
{
SZZHConverse;
InitStack(Converse);
printf("pleaseInputthenumYouwanttoconverse:");
intN,n;
scanf("%d",&N);
printf("数制:");
scanf("%d",&n);
while(N){
Push(Converse,N%n);
N=N%n;
}
inte;
while(Converse.base!=Converse.top)
{
Pop(Converse,e);
printf("%d",e);
}
}
这是我写的那个数制转换程序,我用GDB调试好多次,就是到了Realloc那个地方,出现,invalidoldsize错误。。。
***Errorin`/home/stan/szzh':realloc():invalidoldsize:0x00000000004008c0***
ProgramreceivedsignalSIGABRT,Aborted.
0x00007ffff7a4acc9in__GI_raise(sig=sig@entry=6)
at../nptl/sysdeps/unix/sysv/linux/raise.c:56
56../nptl/sysdeps/unix/sysv/linux/raise.c:没有那个文件或目录.
就是这个错误,我做的通讯录等等都是这个Realloc函数出错,我挣扎好多天了,请大神帮忙解决,感激不尽啊!!!!
分 -->
|