ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어 malloc()
    Visual Studio/C 기초 2013. 9. 6. 15:37

    메모리 영역을 할당하기 위해 라이브러리 함수 malloc()를 사용합니다. 이 함수의 용도는 문자열을 저장하기 위한 메모리 영역을 할당하는 것으로 제한되지 않습니다.

    남아 있는 메모리의 양을 확인하기 위해 malloc()함수를 사용해 보겠습니다.

     

    #include <stdio.h>
    #include <stdlib.h>

    struct kilo{
     struct kilo *next;
     char dummy[1022];
    };                                //1024바이트 단위의 구조체를 정의합니다.

    int freemem(void);

    main(){
     printf("%dKB의 사용가능한 메모리가 남아있습니다.\n",freemem());
    }

    int freemem(void)
    {
     int cnt=0;
     struct kilo *head, *current, *nextone;

     current=head=(struct kilo*) malloc(sizeof(struct kilo));

     if(head==NULL)
      return 0;       //메모리가 유효하지 않음
     cnt++;

     for(;;)
     {
      current->next=(struct kilo*) malloc(sizeof(struct kilo));
      current=current->next;
      if(current==NULL)
       break;
      cnt++;
     }

     current=head;   //cnt는 할당할 수 있는 kilo형 구조체의 수를 가집니다. 반환하기 전에 모두 해제해야 합니다.

     do
     {
      nextone=current->next;
      free(current);
      current=nextone;
     }while(current!=NULL);

     return cnt;

     

    사실 이 방법은 좀 무식한 방법인데요, malloc()함수가 더 이상의 메모리가 유효하지 않다는 것을 나타내며 NULL을 돌려줄 때 까지 계속해서 메모리 블록을 할당하며 반복합니다.

    'Visual Studio > C 기초' 카테고리의 다른 글

    C언어 realloc()  (0) 2013.09.11
    C언어 calloc()  (0) 2013.09.10
    C언어 qsort(), bsearch()  (0) 2013.09.01
    C언어 시간 처리 함수  (0) 2013.09.01
    C언어 strftime() 변환 문자 표  (0) 2013.09.01

    댓글

Designed by Tistory.