Run-Time Check Failure #2 예외발생했는데 어디가 잘못된 건지 모르겠습니다.
#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int apt[10][5];
int empty = 0;
int i, j;
for (i = 1; i <= 10; i++) {
for (j = 1; j <= 5; j++) {
apt[i][j] = i % j;
if (apt[i][j] == 0) {
empty++;
}
}
}
printf("%d\n", empty);
for (i = 1; i <= 10; i++) {
for (j = 1; j <= 5; j++) {
printf("%d\t", apt[i][j]);
}
printf("\n");
}
}
실행도 맞게 되고 실행결과도 맞게 나오는데 예외가 발생했다고 뜹니다ㅠ
Run-Time Check Failure #2 - Stack around the variable 'apt' was corrupted.
위의 문구가 뜨면서 예외가 발생했다고 뜨는데 인터넷에 찾아보니 배열의 크기가 안 맞아서 생기는 오류같은데 어디가 잘못된건지 잘 모르겠습니다.
알려주시면 감사합니다ㅠㅠ
배열은 apt[10][5]로 선언하였는데
질문자님의 for문에서는 i=1부터 시작해서 i <=10 조건으로 루프를 돌기때문에
배열이 맞지 않아서 오류가 발생합니다.
예를 들어 apt[10]은 apt[0]부터 apt[9]까지 채울 수 있는데
i가 1부터 시작하게 되면 apt[1]부터 apt[10]까지 채우는 시도를 하기 때문에 배열 할당이 맞지 않게 됩니다.
따라서 i와 j를 1이 아니라 0에서 부터 시작하고 "<=" 조건을 "<" 조건으로 수정해주어야 합니다.
그리고 배열에 들어갈 값을 계산할 변수는 i, j 말고 별도의 변수를 선언하여 사용합니다.
아래 수정한 코드를 참고하시기 바랍니다.