편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.03.19

    코린이 c언어 질문이요! 이중배열 동적할당으로 NxN 배열을 만드는데, N이 커지면 예외가 발생.


    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    int main() {
        int N, ** p, a, b;
        printf("N : ");
        scanf("%d", &N);
        p = (int**)malloc(sizeof(int*) * N);
        for (a = 0; a < N; a++) {
            p[a] = (int*)malloc(sizeof(int) * N);
        }
        for (a = 0; a < N; a++) {
            for (b = 0; b < N; b++) {
                p[a][b] = 1;
            }
        }
        return 0;
    }
    

    이미지

    인터넷 보고 이중배열 동적할당 공부하던중에 이렇게 코드를 짜보았는데, N을 20000? 정도까지 넣었을때는 문제없이 넘어가는데 22000?정도만 넘어가면 이렇게 오류가 뜨면서 실행이 안되네요.

    사진은 N=30000넣었을 때 입니다.

    인터넷 찾아보고 프로젝트 설정에서 스택 예약 크기라는것도 키워보고 했는데 변하는게 없네요. 그것외에 따로 설정 건드린건 없습니다.

    뭐가 문제일까요?

  • 프로필 박설님의 편집
    날짜2021.03.19

    코린이 c언어 질문이요!


    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    int main() {
        int N, ** p, a, b;
        printf("N : ");
        scanf("%d", &N);
        p = (int**)malloc(sizeof(int*) * N);
        for (a = 0; a < N; a++) {
            p[a] = (int*)malloc(sizeof(int) * N);
        }
        for (a = 0; a < N; a++) {
            for (b = 0; b < N; b++) {
                p[a][b] = 1;
            }
        }
        return 0;
    }
    

    이미지

    인터넷 보고 이중배열 동적할당 공부하던중에 이렇게 코드를 짜보았는데 N을 20000? 정도까지 넣었을때는 문제없이 넘어가는데 22000?정도만 넘어가면 이렇게 오류가 뜨면서 실행이 안되네요 사진은 N=30000넣었을 때 입니다.

    인터넷 찾아보고 프로젝트 설정에서 스택 예약 크기라는것도 키워보고 했는데 변하는게 없네요... 그것외에 따로 설정 건드린건 없습니다.

    뭐가 문제일까요 ㅠ