gpt4 book ai didi

c - 在范围内写入数组值时发生访问冲突

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

我正在尝试初始化一个 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.

最佳答案

你应该这样分配

    uint32_t *rom = malloc(rom_size * sizeof(uint32_t));

在当前情况下,您的数组比您预期的小四倍。

关于c - 在范围内写入数组值时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606432/

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