C memcpy 在 运行 时间崩溃

C memcpy crashing at run time

我有这个问题。 每当我尝试调用 StorageStore 时,它​​都会在 运行 时间崩溃。 我不知道如何解决它。 我试过谷歌搜索,但我对指针有点缺乏经验。 提前致谢。

编辑:我用 gcc -Ofast 编译

uint8_t Storage[256];

typedef struct _QCPU {
    uint8_t pc; // 1
    uint8_t *regs; // 7
    uint8_t *dCache; // 8 (32)
    uint8_t *iCache; // 8 (32)
    uint8_t **port_table; // 8 (8)
    void *str_load; // 8 (1)
    void *str_store; // 8 (1)
    struct Flags flags;
} QCPU;

void StorageStore(QCPU *CPU, uint8_t Addr)
{
    memcpy(Storage+(Addr & 0xE0), CPU->dCache, 32);
}

QCPU* init()
{
    return (QCPU*) malloc(sizeof(QCPU)); // Return Allocated Pointer To QCPU
}

int main()
{
    QCPU *cpu = init();
    cpu->dCache[3] = 5;
    StorageStore(cpu, 5);
    free(cpu);
}

在谷歌搜索未初始化的指针是什么之后 我意识到我的问题

谢谢 alk、Paul Hankin 和 Jiri Volejnik 的回答

我添加了这些行来修复它

QCPU* init()
{
    QCPU* r = malloc(sizeof(QCPU)); // Allocated Pointer To QCPU
    r->dCache = malloc(32);
    r->iCache = malloc(32);
    r->port_table = malloc(8);
    return r;
}