Круговой единый связанный список, это правильный способ сделать это?
struct records t_head=0; struct records *find_id(Rect a) { struct records *tmp; struct records *prev; // Add first node if(t_head==NULL) { tmp=new records; tmp->b=a; tmp->id=trecord_count+1; tmp->tally.resize(labelsInfo.size()); tmp->frames=0; t_head=tmp; t_head->next=NULL; trecord_count++; } else { // Check if there is any node that has delete_flag set first tmp=t_head; while(tmp) { if(delete_flag) { // Delete here if(tmp==t_head) { t_head=tmp->next; delete(tmp); trecord_count--; } else { prev->next=tmp->next; delete(tmp); trecord_count--; } } prev=tmp; tmp=tmp->next; } tmp=new records tmp->b=a; tmp->id=trecord_count+1; tmp->tally.resize(labelsInfo.size()); tmp->frames=0; tmp->next=t_head; t_head=tmp; trecord_count++; } return tmp; }
Что я уже пробовал:
Я реализовал это на основе какой-то статьи где-то, но в конце концов она выходит из строя.
Есть ли что-то изначально неправильное в этом коде ?
Спасибо, что посмотрели,
CHill60
"в конце концов он терпит крах" ... это не очень полезное утверждение. Попробуйте отладить его. Что это за ошибка, о которой сообщается? Какие условия делают его аварийным?
Member 12887991
Извиняюсь. Он либо говорит, что я освобождаю указатель, который ранее не был выделен, либо выходит из строя при разыменовании указателя tmp.