[완료]포인터 배열중 중간배열을 free 한후 중간을 지나가는법?
글쓴이: UnShit / 작성시간: 토, 2007/05/26 - 1:55오후
서버 프로그램을 만들고 있습니다.
SharedNum *sharedNum[MAX_CLIENTS];
이렇게 선언한후
특정 부분에서
sharedNum[share_count]=(SharedNum *)malloc(sizeof(SharedNum));
이렇게 할당합니다.
여기서 share_count 는 클라이언트 접속이 이루어지면 하나씩 증가한다고 볼수 있습니다.(접속이 끊어져도 감소하진 않습니다.)
예를 들어 10명이 접속되어있으면 sharedNum[0]~sharedNum[9] 까지 만들어져 있습니다.
그런데 만약 중간에 한명이 접속을 끊으면 예를 들어 sharedNum[5] 가 접속을 끊는순간 free(sharedNum[5]); 를 해줍니다.
이렇게 되면 0~9까지중 5만 비어있게 됩니다.
나중에 추가로 한명이 접속되면 그 중간(5번에 다시)에 넣어줘야 되는데 그걸 어떻게 하는지 궁금합니다.
for(j=0;j<share_count;j++) { if(sharedNum[j]==NULL) { .... Do Something sharedNum[j]=(SharedNum *)malloc(sizeof(SharedNum)); }
제가 생각했을때 sharedNum[x] 이 포인터가 NULL 이면 비어있으므로
이렇게 뭔가를 하면 될거 같은데...
문제는 free(sharedNum[5]); 이렇게 하면 sharedNum[5] 가 NULL 을 가라키게 되는지 궁금합니다.
아니면 free(sharedNum[5]) 이렇게 하고 sharedNum[5]=NULL 을 따로 해줘야 하는지
아니면 free 하는순간 sharedNum[5] 자체가 존재하지 않는지도 궁금합니다.
Forums:
NULL을
NULL을 넣어줘야합니다.
방법은 생각대로 하시면 됩니다.
댓글 달기