컴공
C 0xC0000005: 0xCDCDCDCD 액세스 위반이 발생했습니다 배열관련착오
확률기반의사결정
2021. 6. 7. 17:22
0xC0000005: 0xCDCDCDCD 액세스 위반이 발생했습니다
이 에러가 계속 떠서 한시간넘게 붙잡고있었는데
struct product { char name[1024]; int price; };
p = (struct product *)malloc(num * sizeof(struct product));
문제의 코드가 scanf("%s %d", p[i].name, p[i].price);이였는데
왜 안되나 breakpoint찍으면서 해보니까 문제는 p[i].price였습니다.
p[i].price도 배열이니까 이름자체가 주소니까 &안해도 되는거아닌가 라고 생각했는데
최종적으로 p[i].price에 해당하는 자료형은 int라서 &를 써줘야되는것같더라구요.
scanf("%s %d", p[i].name, &p[i].price);로 고치니까 해결되었습니다.
액세스 위반 같은 경우에는 보통 내가 틀렸는데 디테일한 수준에서 틀려서 뭐가 잘못되었는지 몰라서 더 화가 나는것같아요.그래서 구글링해도 명쾌한 답이 안나오는 경우가 대부분이라서 더 골치아픔.