我必须动态分配内存,我看到的所有其他列表,该结构都是这样编码的..不知道出了什么问题。结构声明如下:

struct CAD
{
    char hash_atual[TAM_HASH];

    char hash_anterior[TAM_HASH];

    char timestamp[TAM_TEMP];

    ALUNOS registros[REG_MAX];

    struct CAD *prox;

};

typedef struct CAD CADEIA;

...
CADEIA** criar_cadeia(CADEIA **c)
{
    CADEIA *novo;
    char hash[TAM_HASH], caracteres[62];

    c = (CADEIA**)malloc(sizeof(CADEIA*));
    novo = (CADEIA*)malloc(sizeof(CADEIA));

...
    strcpy(novo->hash_atual, hash);
    strcpy(novo->prox->hash_anterior, novo->hash_atual); --->problem here

最佳答案

问题是novo->prox是未初始化的指向struct CAD的指针,因此它可能包含垃圾值。访问novo->prox之前,应将其设置为指向有效的内存地址。

07-26 05:06