我正在尝试初始化一个32位整数数组,但由于某种原因,调试器(MSVC)在编写过程的中途抛出了一个异常。
阵列长度为1048576个元素
迭代263152失败
#define ROM_MAX_SIZE (1024*1024*4)
int main(){
size_t rom_size = ROM_MAX_SIZE / sizeof(uint32_t);
uint32_t *rom = malloc(rom_size); //<-- Error here, must be ROM_MAX_SIZE. See edit
for (uint32_t i = 0; i < rom_size; i++){
rom[i] = i; //<--- Access violation here
}
free(rom);
return 1
}
我可能遗漏了一些明显的东西,但我看不出来。
编辑:
Malloc必须是元素数量的4倍。
uint32_t *rom = malloc(rom_size); //<--- WRONG!
uint32_t *rom = malloc(ROM_MAX_SIZE); //<--- OK.