在 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
的结果。
久违的摸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
的结果。