[求助]关于程序产生一个访问违例(段异常)
程序中指出了出问题的语句 请各位帮忙看看 我不清楚到底哪错了
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int Status;
typedef char SElemType;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack *S);
Status DestroyStack(SqStack *S);
Status ClearStack(SqStack *S);
Status StackEmpty(SqStack *S);
int StatusLength(SqStack *S);
Status GetTop(SqStack S, SElemType *e);
Status Push(SqStack *S, SElemType e);
Status Pop(SqStack *S, SElemType *e);
Status StackTraverse(SqStack S, Status ( *visit)());
Status main(int argc, char *argv[])
{
SqStack *stk;
Status d;
InitStack(stk);
DestroyStack(stk);
printf( "Press ENTER to continue...\n ");
getchar();
return OK;
}
Status InitStack(SqStack *S)
{
S-> base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
/*调试中这句出现问题*/
if(!S-> base)
{
printf( "Not Enough Memory!\n ");
exit(OVERFLOW);
}
S-> top = S-> base;
S-> stacksize = STACK_INIT_SIZE;
return OK;
}
Status DestroyStack(SqStack *S)
{
free(S-> top);
return OK;
}
[解决办法]
SqStack *stk = new SqStack; //orz
[解决办法]
Status main(int argc, char *argv[])
{
SqStack _stk;
SqStack *stk;
Status d;
stk = &_stk;
InitStack(stk);
DestroyStack(stk);
printf( "Press ENTER to continue...\n ");
getchar();
return OK;
}