편집 기록

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

    c언어 // free 함수관련 질문입니다.


    제가 지금 스택을 배열으로 구현하고 있는데 아래와 같은코드에서

    main함수속에서 copy한후 copy된 스택을 del을 하면서

    free를 사용했을경우 컴파일 에러가 뜨지않는반면 실행시키면 free는 읽히는데 실행은 되지않아 질문드려요

    copy함수안에서 _st_ar 입력받는 포인터 역시 free가 되지않네요 ㅠㅠ

    main안에 변수는 모두 main내부에서 선언했습니다.

    int *copy(int *_st_ar, int nsize,  int *_t)
    {
        int i;
    
         int* _copy_ar = (int*)malloc(sizeof(int)*(nsize*2));
        for(i=0;i<nsize;i++)
        _copy_ar[i] = _st_ar[i];
    
        if(_st_ar != NULL)
        free(_st_ar);
        _st_ar = NULL;
    
        return _copy_ar;
    }
    
    void del(int *_copy_ar)
    {
        free(_copy_ar);
       _copy_ar = NULL;
    }
    
    int main()
    {
        // ...
        printf("copy the stack array\n");
        new_array = copy(stack_array, nsize, &top);
        printStack(stack_array, nsize);
        printStack(new_array, nsize*2);
        printf("destroy stack array\n");
        del(new_array);
        printStack(new_array, nsize*2);
    
        return 0;
    }
    
  • 프로필 유동욱님의 편집
    날짜2017.10.20

    c언어 // free 함수관련 질문입니다.


    제가 지금 스택을 배열으로 구현하고 있는데 아래와 같은코드에서

    main함수속에서 copy한후 copy된 스택을 del을 하면서

    free를 사용했을경우 컴파일 에러가 뜨지않는반면 실행시키면 free는 읽히는데 실행은 되지않아 질문드려요

    copy함수안에서 _st_ar 입력받는 포인터 역시 free가 되지않네요 ㅠㅠ

    int *copy(int *_st_ar, int nsize,  int *_t)
    {
        int i;
    
         int* _copy_ar = (int*)malloc(sizeof(int)*(nsize*2));
        for(i=0;i<nsize;i++)
        _copy_ar[i] = _st_ar[i];
    
        if(_st_ar != NULL)
        free(_st_ar);
        _st_ar = NULL;
    
        return _copy_ar;
    }
    
    void del(int *_copy_ar)
    {
        free(_copy_ar);
       _copy_ar = NULL;
    }
    
    int main()
    {
        // ...
        printf("copy the stack array\n");
        new_array = copy(stack_array, nsize, &top);
        printStack(stack_array, nsize);
        printStack(new_array, nsize*2);
        printf("destroy stack array\n");
        del(new_array);
        printStack(new_array, nsize*2);
    
        return 0;
    }
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2017.10.20

    c언어 // free 함수관련 질문입니다.


    제가 지금 스택을 배열으로 구현하고 있는데 아래와 같은코드에서

    main함수속에서 copy한후 copy된 스택을 del을 하면서

    free를 사용했을경우 컴파일 에러가 뜨지않는반면 실행시키면 free는 읽히는데 실행은 되지않아 질문드려요

    copy함수안에서 _st_ar 입력받는 포인터 역시 free가 되지않네요 ㅠㅠ

    int *copy(int *_st_ar, int nsize, int *_t)

    { int i;

     int* _copy_ar = (int*)malloc(sizeof(int)*(nsize*2));
    for(i=0;i<nsize;i++)
    _copy_ar[i] = _st_ar[i];
    
    if(_st_ar != NULL)
    free(_st_ar);
    _st_ar = NULL;
    
    
    return _copy_ar;
    

    }

    void del(int *_copy_ar) {

    free(_copy_ar);
    

    _copy_ar = NULL;

    }