E D R , A S I H C RSS

새싹-날다람쥐 6월 10일 (rev. 1.12)

새싹-날다람쥐 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++에서도 이런 형태는 불가능하다.)

결론 : 메모리의 최적화를 위해서.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:41
Processing time 0.0322 sec