在 C 程序中出现运行时错误

getting runtime error in a C program

久违的摸C。我在以下代码中收到 运行 时间错误。我正在使用的 IDE[C-Free] 没有显示确切的错误,但它显示 'StackMin.exe' 已停止工作。

这里我用了两个结构,struct stack是栈,struct AdvanedStack是存放两个栈。最后我想打印 AdvancedStack

中的两个堆栈的容量

代码是:

#include<stdio.h>

struct stack {
    int capacity;
    int top;
    int *array;
  };

struct AdvancedStack{

    struct stack* elementStack;
    struct stack* minStack; 

};


struct stack* createStack()
{
    struct stack* myStack= (struct stack*)malloc(sizeof(struct stack));
    myStack->capacity=5;
    myStack->top=-1;
    myStack->array= malloc(myStack->capacity * sizeof(int));

    return myStack;

}

struct AdvancedStack* createAdvancedStack()
{
  struct AdvancedStack *myStack = (struct AdvancedStack*)malloc(sizeof(struct AdvancedStack));
    myStack->elementStack=createStack();
    myStack->minStack=createStack();
}

int main()
{
    struct AdvancedStack* advStack = createAdvancedStack();

   printf("%d",advStack->elementStack->capacity);
    printf("%d",advStack->minStack->capacity);
}

您忘记从 createAdvancedStack() 函数中 return myStack

struct AdvancedStack* createAdvancedStack()
{
    struct AdvancedStack *myStack = malloc(sizeof(struct AdvancedStack)); //Don't cast the result of malloc

    myStack->elementStack=createStack();
    myStack->minStack=createStack();

    return myStack; //You forgot this
}

阅读 this 了解为什么不应该转换 malloc 的结果。