이 솔루션으로 연결 목록 할당을 해제 할 수 있습니까? 목록에 할당 된 메모리가 해제되었는지 어떻게 확인할 수 있습니까?연결 목록 할당 해제
void freeList(EmpList** listHead)
{
EmpList* iter = *listHead;
while(iter != NULL)
{
iter = iter->next;
free(*listHead);
*listHead = iter;
}
}
다음은 구조체
typedef struct employeeData
{
int EMP_ID;
char name[21];
int dept;
int rank;
double salary;
} Employee;
typedef struct empList
{
Employee employee;
struct empList* next;
} EmpList;
왜 함수에'EmpList * *'(포인터에 대한 포인터)를 넘겨 줍니까? – 5gon12eder
호출자가'EmpList * head'를 정의한 다음'head'를'freeList (& head) '를 호출하여'NULL'로 자동 설정하도록 할 수 있다고 생각합니다.) – nneonneo
내 구현에서는 i가 그랬다고 말하지 않았습니다. 맞습니다 그래서 뭔가 잘못 말하면 제발 listhead를 바꾸려면 포인터 머리부터 포인터가 필요합니다. 목록 헤드에서 데이터를 역 참조하는 것이 아니라 목록을 가리키는 포인터입니다. 그리고 네오가 말한 것 – Thomas