C++프로그래밍

2013.04.23_동적할당_

성엽이 2013. 4. 23. 16:21

▶ 동적할당을 이해해보자!

 예제 - 10_4.c

#include < stdio.h >
#include < stdlib.h >  // malloc() 함수

typedef struct node
{
  char data;
  struct node *next;
}NODE;

int main()
{
  NODE *list;
  NODE *temp;

  list = (NODE *)malloc(sizeof(NODE));  // list 에 주소값을 넣고 동적메모리할당
  list->data='a';        // 동적할당한곳의 data에 'a' 값을 넣음.
  temp = list;        // temp 에 동적할당받은 list 주소값을 넣음.
  temp->next = (NODE *)malloc(sizeof(NODE)); // temp->next에 동적할당을 받는다.
  temp = temp->next;      // temp 에다가 동적할당받은 주소를 넣어준다.
  temp->data='b';        // 동적할당받은주소에 'b' 값을 넣음.
  temp->next = (NODE *)malloc(sizeof(NODE)); // temp->next에 동적할당을 받는다.
  temp = temp->next;      // temp 에다가 동적할당받은 주소를 넣어준다.
  temp->data='c';        // 동적할당받은주소에 'c' 값을 넣음.
  temp->next=NULL;      // temp->next에 NULL 을 넣는다.

  // 연결리스트의 출력
  temp = list;
  while( temp != NULL )
  {
    printf("%5c\n", temp->data);
    temp = temp->next;
  }

  temp = list;
  while( temp != NULL )
  {
    list = list->next;
    free(temp);
    temp = list;  
  }
  

  return 0;
}


----------

10_4.c

----------