메모리 free에 대해서 질문입니다.

kernelbomb의 이미지

char **ptr;
int i;
ptr = malloc(sizeof(char *) * 4);

for (i = 0; i < 4; i++)
    ptr[i] = strdup("test");
free(ptr);

포인터 배열을 메모리 할당 했는데요. 나중에 해제 할려고 하는데
free();를 위에처럼 쓰면 되는것인지요?

for(i = 0; i < 4; i++)
    free(ptr[i]);

요렇게 해줘야 하는거 같은데... ㅜㅜ;
어느게 맞는 건지요? 정말 궁금합니다.

jinyeong의 이미지

둘다 해주셔야 하지 않을까요?

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

sharefeel의 이미지

아래의 것을 먼저 하셔야겠지요..^^

===============
Vas Rel Por