gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:33 26 4
gpt4 key购买 nike

久违的触碰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() 函数返回 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 - 在 C 程序中出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com