컴공

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);로 고치니까 해결되었습니다.

 

액세스 위반 같은 경우에는 보통 내가 틀렸는데 디테일한 수준에서 틀려서 뭐가 잘못되었는지 몰라서 더 화가 나는것같아요.그래서 구글링해도 명쾌한 답이 안나오는 경우가 대부분이라서 더 골치아픔.