편집 기록

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

    동적배열을 이렇게 선언하면 안되는 이유가 있나요?


    배열의 크기는 컴파일시 정해지기에 동적크기의 배열을 선언하려면

    int size;
    scanf("%d", &size);
    int* arr = (int*)malloc(sizeof(int) * size);
    

    이렇게 하라고 배웠는데 아래와 같이 코딩해도 문제없이 돌아갑니다. (c, cpp )

    int size;
    scanf("%d",&size);
    int arr[size];
    

    컴파일시 배열의 크기가 정해지지 않는데도 문제 없이 프로그램이 돌아가는 이유와, 저것이 된다면 이런 경우에서 굳이 malloc과 같은 동적할당을 사용하지 않고 아래처럼 코딩하는 습관을 가져도 문제가 없을지 , 그리고 혹시 c와 cpp에서의 차이점이 있다면 알고싶습니다.

  • 프로필 mssak님의 편집
    날짜2023.01.10

    동적배열을 이렇게 선언하면 안되는 이유가 있나요?


    배열의 크기는 컴파일시 정해지기에 동적크기의 배열을 선언하려면

    int size;
    scanf("%d", &size);
    int* arr = (int*)malloc(sizeof(int) * size);
    

    이렇게 하라고 배웠는데 아래와 같이 코딩해도 문제없이 돌아갑니다. (c, cpp )

    int size;
    scanf("%d",&size);
    int arr[size];
    

    컴파일시 배열의 크기가 정해지지 않는데도 문제 없이 프로그램이 돌아가는 이유와, 저것이 된다면 이런 경우에서 굳이 malloc과 같은 동적할당을 사용하지 않고 아래처럼 코딩하는 습관을 가져도 문제가 없을지 , 그리고 혹시 c와 cpp에서의 차이점이 있다면 알고싶습니다.