gpt4 book ai didi

c - 调用函数时内存访问错误

转载 作者:行者123 更新时间:2023-11-30 17:37:12 26 4
gpt4 key购买 nike

实际上我使用单元测试进行开发。但我以其他形式分解我的代码以询问我遇到的错误。

我的 header 文件中有这些声明

typedef struct
{
void *topOfStack;

}Stack;



typedef enum {NUMBER,OPERATOR,IDENTIFIER}Token;

int operatorEvaluate(Stack *numberStack , Stack *operatorStack);
void * pop(Stack *stack);

以下是相应的文件

#include "try.h"

void *pop(Stack *numberStack)
{
Token *newToken = NUMBER;

return newToken;

}


int operatorEvaluate(Stack *numberStack , Stack *operatorStack)
{
Token *first = (Token*)pop (numberStack);
if(numberStack != operatorStack)
{
if(*first == NUMBER)
return 1;
}
return 0;
}

这是我调用函数的源文件,它是main

#include "try.h"
#include <stdio.h>

int main ()
{
Stack numberStack;
Stack operatorStack;
int num;
num = operatorEvaluate(&numberStack , &operatorStack);
printf("This is the returned value: %d",num);
return 0;
}

当我尝试编译时,单元测试告诉我内存访问错误。所以我尝试使用 Eclipse 来编译这些,Windows 告诉 .exe 已停止工作。希望有人能帮助我,我卡了很长时间......

最佳答案

启用编译器警告。

特别是,这毫无意义:

Token *newToken = NUMBER;

这是一个指针,并且您正在分配一个

我无法提出修复方案,因为我不知道您在做什么。

关于c - 调用函数时内存访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480607/

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