首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

[]关于程序产生一个访问违例(段错误)

2012-03-19 
[求助]关于程序产生一个访问违例(段异常)程序中指出了出问题的语句请各位帮忙看看我不清楚到底哪错了#incl

[求助]关于程序产生一个访问违例(段异常)
程序中指出了出问题的语句   请各位帮忙看看   我不清楚到底哪错了


#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;
}

热点排行