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;
}
我有这个问题。 每当我尝试调用 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;
}