Я пытаюсь инициализировать массив из 32-разрядных целых чисел bu, по какой-то причине отладчик (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
}
я мог отсутствовать что-то очевидное, но я не вижу его.
Edit:
Malloc должен быть в 4 раза количество элементов.
uint32_t *rom = malloc(rom_size); //<--- WRONG!
uint32_t *rom = malloc(ROM_MAX_SIZE); //<--- OK.
Почему, на ваш взгляд, это диапазон? – juanchopanza
Отладчик терпит неудачу, когда i == 263152 * путь * ниже размера массива 1048576. Как указано в сообщении, juuust выше кода. – NeonMan
Malloc - размер четверти. должен быть ROM_MAX_SIZE, а не ROM_MAX_SIZE/4 – NeonMan