C언어 2차원 배열 동적 할당 중 엑세스 위반
조회수 1270회
2차원 배열 동적 할당 중
예외 발생(0x00F55146, Project1.exe): 0xC0000005: 0xFDFDFE01 위치를 읽는 동안 액세스 위반이 발생했습니다..
다음과 같은 메시지를 받았습니다.
#include<stdio.h>
#include<stdlib.h>
int main() {
int row, column;
scanf_s("%d %d", &row, &column);
char** matrix = (char**)malloc(sizeof(char*)*row);
for (int i = 0; i < row; i++)
matrix[i] = (char*)malloc(sizeof(char)*column);
matrix[0][0] = 'a';
printf("%c", matrix[0][0]);
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++)
scanf_s(" %c", matrix[row][column], 1); // 액세스 위반 위치
}
for (int i = 0; i < row; i++) {
printf("\n");
for (int j = 0; j < column; j++)
printf("%c ", matrix[column][row]);
}
}
보시면 matrix[0][0]에 문자 a를 넣는 것까지는 문제 없이 돌아갑니다.
이 결과를 통해 matrix[0][0]에 memory allocation이 정상적으로 됐다는 것으로 이해했는데
matrix[0][0]에 scanf_s로 문자를 읽어서 할당하려고 하니 액세스 위반이 발생했습니다.
액세스 위반은 메모리 공간이 없는 곳에 데이터 할당을 하려고 하면 발생한다고 보았는데..
matrix[0][0]에 문자 a를 할당하지 않고 scanf_s를 해도 마찬가지였습니다 ㅠㅠ
왜 그럴까요..?
댓글 입력