gpt4 book ai didi

c - 初始化结构时发生访问冲突

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

我已经编写了 RPN 计算器的代码,它对于基本运算符(+、*、/、^)以及浮点和负数都可以正常工作。它还评估表达式,如 (x^2 + x*4/-2) : 1 -> 5 :0.5(x 从 1 到 5 评估,步长为 0.5)

我使用了字符堆栈。

现在,我想添加对 cos(x)、tan(x) 等函数的支持。为了达到这个目的,我需要构建一个 char* 堆栈,在解析后存储诸如 sin、cos、sqrt 等单词。

问题是,在初始化堆栈时,我收到“访问冲突:写入地址 0x01”错误。

我不知 Prop 体原因。难道是malloc()的使用?

这些是使用堆栈的函数。

typedef struct nodo{
char *operador;
struct nodo *next;
}tipo;

typedef tipo *elemento;
typedef tipo *top;

int push(top*,char*) ;
void init(top *);
void libera(top*);
char* pop(top*);


int main(){
(...)
top op;
init(&op);
(...)
}


void init(top *pila) {
*pila = malloc(sizeof(**pila));
(*pila)->operador = NULL;
(*pila)->next = NULL;
}

void libera(top *pila) {
free(*pila);
*pila = NULL;
}


int push (top *last,char *dato){
elemento new1;
int j=strlen(dato);
new1 = (elemento)malloc(sizeof(tipo));
strncpy(new1->operador, dato,j);
new1->next=*last;
*last=new1;
;}


char* pop(top *last){
elemento aux;
char* caract;
aux = (elemento)malloc(sizeof(tipo));
aux=*last;
if (!aux)
return 0;
*last=aux->next;
strcpy(caract,aux->operador);
free(aux);
return caract;
}

最佳答案

改变...

*pila = malloc(sizeof(**pila));

到...

*pila = malloc(sizeof(tipo));

关于c - 初始化结构时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924384/

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