질문1: 아래 와 같이 코드를 작성했는데, 제 비쥬얼 스튜디오에서는 원하는대로 출력이 되는데 심사에서 계속 실행되지 않는 코드라며 틀렸다고 나옵니다. 뭐가 잘못된건지 잘 모르겠습니다. 설명 부탁드려요.
질문2: 아래의 코드를 실행하면,
m[row] = malloc(sizeof(int) * i);
C6011, C6386 경고창이 뜨는데 이것 때문인가요?
같은 경고창이 '38.3 포인터에 할당된 메모리를 2차원 배열처럼 사용하기' 챕터에 있는 예제를 써도 똑같이 나옵니다.
이 경고창은 무시해도 되는 것인가요?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
scanf("%d", &i);
int** m = malloc(sizeof(int) * i);
for (int row = 0; row < i; row++)
{
m[row] = malloc(sizeof(int) * i);
}
for (int row = i - 1; row >= 0; row--)
{
for (int col = i - 1; col >= 0; col--)
{
if (row == col)
m[row][col] = 1;
else
m[row][col] = 0;
}
}
for (int row = 0; row < i; row++)
{
for (int col = 0; col < i; col++)
{
printf("%d ", m[row][col]);
}
printf("\n");
}
for (int row = 0; row < i; row++)
free(m[row]);
free(m);
return 0;
}
제 비주얼 스튜디오에서는 위코드도 동작하나
int** m = malloc(sizeof(int*) * i);
심사에서는 이게 문제였네요.
감사합니다.