나는이 2 차원 구조체를 삭제하기 위해 이와 같은 기능을 가지고 있지만, 너무 빠르지 않다. (memset 또는 뭔가처럼) 훨씬 더 빠른 방법이있을 것이라고 생각한다. 어떤 생각도 감사하겠다;)2D 연결된 목록 배열 삭제, 방법?
void freeAlllistNode(LISTNODEPTR *sPtr[][10])
{ LISTNODEPTR temp;
for (char i = 0; i<19; i++){
for (char di = 0; di<10; di++){
while (sPtr[i][di] != NULL){
temp = *(sPtr[i] + di);
*(sPtr[i] + di) = temp->next;
free(temp);
}
}
}
}
그리고 그것은
typedef struct listNode{
char* val ;
struct listNode *next;
}LISTNODE;
using LISTNODEPTR = LISTNODE*;
아니요, 더 빠른 방법이 없습니다. 동적으로 할당 된 많은 개체가 삭제됩니다. 이것이 근본입니다. 삭제할 개체가 수백 개있는 경우 삭제할 개체가 수백 개 있습니다. 바로 가기가 없습니다. 이것이 성능상의 문제로 판명되면, 처음에는 수백 개의 동적 객체를 생성하지 않아도되도록 데이터 구조를 재 설계해야합니다. –
문제가 발생하지는 않지만 free()가 표시됩니다. 실제로 malloc()을 사용하여 객체를 할당합니까? 새로운/삭제되어야합니다. – Christophe
정말 모든 객체를 통해 iteraate 할 필요가 있습니까? (즉, 크기와 함께 호출하는 memset과 같은 것을 의미합니다.) –