-3
디버거 (MSVC)가 쓰기 프로세스의 중간 단계에서 예외를 throw하는 이유로 인해 32 비트 정수 bu 배열을 초기화하려고합니다.범위 내에 배열 값을 쓸 때 액세스 위반이 발생했습니다.
배열은 내가 뭔가를 분명 누락 될 수 있습니다 반복 263,152
#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
}
에
실패 긴 1048576 개 요소하지만 난 그것을 볼 수 없습니다.
편집 :
는 MALLOC 요소의 4 배 여야한다.
uint32_t *rom = malloc(rom_size); //<--- WRONG!
uint32_t *rom = malloc(ROM_MAX_SIZE); //<--- OK.
왜 범위 내에 있다고 생각합니까? – juanchopanza
1048576 배열 크기 아래에서 i == 263152 * way * 일 때 디버거가 실패합니다. 게시물에 명시된 바와 같이, 코드 위의 juuust. – NeonMan
Malloc은 1/4 크기입니다. ROM_MAX_SIZE가 아니면 안된다 ROM_MAX_SIZE/4 – NeonMan