편집 기록

편집 기록
  • 프로필 편집요청빌런님의 편집
    날짜2020.03.19

    C언어 포인터 2차 배열 동적할당 해제에서 문제가 발생합니다.


    #include stdio.h
    #include stdlib.h
    
            unsigned int Node_size;
            float Mean_degree;
            int (*bin)[2] , i , j , k=0 , l=0;
    
            printf("Node size :?");
            scanf("%d",&Node_size);
            printf("Mean degree :?");
            scanf("%f",&Mean_degree);
    
            bin=(int(*)[2])malloc(sizeof(int)*Node_size*(Node_size-1));
            for(i=0;i<Node_size;i++){
                    for(j=i+1;j<Node_size;j++){
                            bin[k][l]=i;
                            l++;
                            bin[k][l]=j;
                            l--;
                            k++;
                    }
            }
            for (i=0;i<Node_size*(Node_size-1);i++){
                    printf("%d  ",*(*(bin)++));
    
            }
                for(i=0;i<Node_size*(Node_size-1);i++){
                    free(bin[i]);
            }
           free(bin);
    

    bin[Node_size*(Node_size-1)][2] 를 동적할당하여 2차원 배열로 사용하였습니다.

    처음에는 free(bin) 하나만 사용했다가 문제가 발생하여 free(bin[i])를 추가한 상태입니다.

    그래도 문제가 발생하여 어느 부분에서 잘못된 코드를 사용하였는지 알고 싶습니다.

    감사합니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.03.19

    C언어 포인터 2차 배열 동적할당 해제에서 문제가 발생합니다.


    include stdio.h

    include stdlib.h

        unsigned int Node_size;
        float Mean_degree;
        int (*bin)[2] , i , j , k=0 , l=0;
    
        printf("Node size :?");
        scanf("%d",&Node_size);
        printf("Mean degree :?");
        scanf("%f",&Mean_degree);
    
        bin=(int(*)[2])malloc(sizeof(int)*Node_size*(Node_size-1));
        for(i=0;i<Node_size;i++){
                for(j=i+1;j<Node_size;j++){
                        bin[k][l]=i;
                        l++;
                        bin[k][l]=j;
                        l--;
                        k++;
                }
        }
        for (i=0;i<Node_size*(Node_size-1);i++){
                printf("%d  ",*(*(bin)++));
    
        }
            for(i=0;i<Node_size*(Node_size-1);i++){
                free(bin[i]);
        }
       free(bin);
    

    bin[Node_size*(Node_size-1)][2] 를 동적할당하여 2차원 배열로 사용하였습니다. 처음에는 free(bin); 하나만 사용했다가 문제가 발생하여 free(bin[i])를 추가한 상태입니다. 그래도 문제가 발생하여 어느 부분에서 잘못된 코드를 사용하였는지 알고 싶습니다. 감사합니다.