2차원 동작 할당시 TIP..이랄까요?

ep6tri의 이미지

char **p;
p=(char **)malloc(n*sizeof(char *));
 
for (i=0;i<n;i++) /* n행 m열입니다 */
   p[i]=(char *)malloc(m*sizeof(char));
 
/* ... */
 
for (i=0;i<n;i++)
   free(p[i]);
 
free(p);

많이 이렇게 인터넷에서 쓴다고 나와 있습니다.
하지만 이렇게 쓸 수도 있지요.

char **p;
char *t;
p=(char **)malloc(n*sizeof(char *));
t=(char *)malloc(n*m*sizeof(char)); /* n행 m열을 한번에 할당합니다 */
 
for (i=0;i<n;i++)
{
   *(p+i) = t;
   t += m;
}
 
/* ... */
 
free(*p);
free(p);

열 수에 걸쳐 여러번 malloc을 실행시키지 않아도 되고
해제할 때도 free를 두 번만 써도 되구요..
좀 더 2차원 배열의 메모리 배열의 모습에 맞게 할당이 되네요..
좋은 것 같아서 올려봅니다.

madman93의 이미지

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------