인프런 커뮤니티 질문&답변

한지수님의 프로필 이미지
한지수

작성한 질문수

독하게 C를 배운 사람을 위한 선형 자료구조

범위 검색 기능 적용

섹션4 범위검색 강의 질문있어요.

해결된 질문

작성

·

315

0

올려주신 자료 04_RangeSearch02에서

void SearchByAge(void) 함수 마지막 부분 질문있습니다.

SearchByAgeRange함수에서 동적할당한 주소를 리턴하고

void **pResult로 받았습니다.

void** pResult = SearchByAgeRange(min, max, &cnt);

USERDATA* pTmp = NULL;

for (int i = 0; i < cnt; ++i)

{

pTmp = (USERDATA*)pResult[i];

printf("%d, %s, %s\n", pTmp->age, pTmp->name, pTmp->phone);

}

free(pResult); <----요부분입니다.

이제 해제를 해줘야 하는데요

free(pResult)를 한 번에 해도 괜찮은건가요?

아니면 for문 돌릴 때 free(pResult[i])로 해야하나요?

답변 2

1

한지수님의 프로필 이미지
한지수
질문자

앗 해결됐습니다.

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

답변 전에 스스로 해결 하셨군요! 멋지십니다. 😄

그럼에도 사족을 달아 보자면...

 

한 대상에 대해 포인터는 얼마든지 여럿이 될 수 있습니다. 동적 할당된 메모리에 대해 반드시 해제를 해야 한다는 강박 때문에 포인터가 가리키는 대상은 무조건 free() 시켜야 한다는 고정 관념이 생길 수 있습니다. 이미 아시겠지만...불필요한 관념이라 하겠습니다. 이 문제를 계기로 포인터에 대한 개념적 이해가 한 수준 성장하셨기를 진심으로 바랍니다. 고맙습니다. 😄

한지수님의 프로필 이미지
한지수
질문자

늦은 시간 답변 고맙습니다.

한지수님의 프로필 이미지
한지수

작성한 질문수

질문하기