- 1
- 2
- 3
- 4
- 5
for( int b = 0; b < cntblocket; ++b )
{
delete msrLst[b]->record;
delete msrLst[b]->record;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+160
for( int b = 0; b < cntblocket; ++b )
{
delete msrLst[b]->record;
delete msrLst[b]->record;
}
Сразу вспоминается: "- А зачем у вас тут два одинаковых jump'а стоять? - А вдруг один не сработает?"
Видимо, совсем не выспался программист ;)
Мистер Хэнки 13.11.2010 12:39 # +2
absolut 13.11.2010 13:10 # +8
Govnoeb 13.11.2010 13:54 # +1
ctm 13.11.2010 14:36 # 0
absolut 13.11.2010 14:41 # 0
с этого места поподробнее, плиз.
ctm 13.11.2010 15:08 # 0
способ 1:
добавим static int ObjCount;
int test::ObjCount = 0;
в конструкторе ObjCount ++;
в деструкторе if ((-- ObjCount) < 0) throw ....;
при выполнении получим что такое вообще имеет место быть - теперь знаем что искать. искать придется вручную.
способ 2:
Делаем сингл-тон хеш-таблицу.
в конструкторе test:
hash[int(this)] = this;
в деструкторе test:
if (hash[int(this)] == NULL) throw ...; // тут получим конкретный вызов
hash[int(this)] = NULL;
absolut 14.11.2010 00:04 # 0
Govnoeb 14.11.2010 12:35 # +1
надо бы хотя бы добавить
if(--ObjCount < 0 && !uncaught_exception()) throw 666;
потом оборачивать придется все классы и структуры в countable_. т.е.
class ... : public countable_ { ... };
ctm 14.11.2010 14:22 # +1
Xom94ok 13.11.2010 22:36 # +1
Тест на трезвость :-) "Сколько операторов delete тут написано?"
guest 16.12.2010 23:06 # 0
delete msrLst[b]->record;
слово record на что-то ещё.