gpt4 book ai didi

c - malloc执行错误

转载 作者:行者123 更新时间:2023-11-30 15:20:06 25 4
gpt4 key购买 nike

我使用此方法进行测试,但由于某种原因,malloc 无法正常工作。当我评论它时它确实有效,但否则它只会说程序已停止工作。

typedef struct {
int NroUSP; // chave primária
int curso;
int estado;
int idade;
bool valido; // para exclusão lógica
} REGISTRO;

typedef struct s {
int NroUSP; // chave primária
int curso;
int estado;
int idade;
bool valido;
struct s* prox;
} NO;

typedef struct {
NO* inicio;
} LISTA;

这些是我使用的结构^

编辑:问题是 AUX 之前的星号

void ex6(){
REGISTRO* aux;
FILE *arq = fopen("C:\\Users\\jujuc_000\\Desktop\\Teste\\dados.bin","rb");
FILE *arq2 = fopen("C:\\Users\\jujuc_000\\Desktop\\Teste\\ex6.bin","wb");
LISTA l;
l.inicio = NULL;
NO*p = (NO*)malloc(sizeof(NO)); // this is the test malloc
if(arq){
while(1==fread(&aux,sizeof(REGISTRO),1,arq)){
/*p = (NO*)malloc(sizeof(NO)); // this is the one I want to keep
p->NroUSP = aux->NroUSP;
p->curso = aux->curso;
p->estado = aux->estado;
p->idade = aux->idade;
p->valido = aux->valido;
if(!l.inicio){
l.inicio = p;
}
p=p->prox;*/
}
}

fclose(arq);
fclose(arq2);
}

最佳答案

fread(&aux,sizeof(REGISTRO),1,arq) 很可能是你的问题; aux 是一个指向 REGISTRO 的指针,但是您尝试将完整的 REGISTRO 读入其中,这很可能会覆盖内存,从而导致下一行明显的 malloc 失败。将声明更改为:

REGISTRO aux;

一切都应该正常。

关于c - malloc执行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203491/

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