E D R , A S I H C RSS

새싹-날다람� 6월 10�


-> 홈으로

�� 할당


char *d;

d = (char*)malloc(sizeof(char)*100);

여기서 malloc(sizeof(char)*100);

� 메모리 �� 어� 곳� (sizeof(char)*100)byte만�� 공간� 할당하고 그 주소를 반환한다.

그리고 d는 char*형태�기 때문� Casting� 해 주어서 (char*)malloc(sizeof(char)*100); 와 같� 형태가 �어야 한다.
� 것� char d [100]와 같� 변수 선언법�다.

char *d;

d = (char*)malloc(sizeof(char)*100);

와 같� 선언� 했��� d[10]와 같� 배열� 접근� 가능하다.



ex)�것으로 2차� 배열� 만들려면?

char **arrray, *d;


d = (char*)malloc(sizeof(char) * 100);

arrray = (char**)malloc(sizeof(d) * 100);

�렇게 하면 char array [100][100]와 같� 형태가 �다.




�걸 왜 쓰�?


int temp;

char *d;

scanf("d� 배열 �기를 입력해주세요.\n%d", temp);

d = (char*)malloc(sizeof(char) * temp);



와 같� 형태를 통해서 �신� �하는 �기를 배열� 할당시킬 수 있다.
C�서는 변수 선언� 맨 위� 해야 하므로 int d[temp]와 같� 형태로 선언할 수 없다.(아무�서나 선언� 할 수 있는 C++�서� �런 형태는 불가능하다.)

결론 : 메모리� 최�화를 위해서.



FREE � 사용법

free(d); 를 �용해서 지금 실행중� 프로그램� 종��어있는 sizeof(char) * temp만�� 메모리를 OS� 다시 반환시킨다.

� free는 가장 하위 ��터�만 사용� 가능하다. 따�서 array를 모� free시키려면 for문� �려서 free(array[i])와 같� 모� 없애준 후� free(array);를 해야 한다.

하지만 간단한 프로그램�서는 �렇게 해 줄 필요가 없다. 프로그램� 종료시키면 알아서 OS가 가져가기 때문�.

나중� 거대 프로�트(오랜시간�안 켜 놓아야 하는 게임 같� 경우)�서는 메모리 반환� 하지 않으면 컴퓨터가 �려지고 가용메모리가 없어져서 메모리를 요청했� 때 메모리가 부족해 프로그램� 다시 �다 켜야 하는 �황� 발�할 수 있다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:41
Processing time 0.0042 sec