Может быть вы правы? Я рассуждал так:В этой строке Malloc'ом выделяется место под массив указателей в конструкторе (AnyType==PointerToAnyObject):
>> items = (AnyType*) malloc(sizeof(AnyType)*nstep);
Это место зачищается с помощью строки в деструкторе:
>> free(items);
Сами объекты создаются где-то вне массива с помощбю new(). А строчка
>> delete items[index];
возможно (это и есть первоначальный вопрос) будет удалять этот объект. Не массив указателей! Он удаляется в деструкторе.
Т.е. весь вопрос в том, что делает эта последняя строка - удаляет она объект или нет. Вроде по логике, выражение items[index] должно возвращать указатель на объект из массива указателей. Следовательно теоретически его (этот объект) можно грохнуть изнутри массива оператором delete. Вот только что происходит на самом деле? Вот какой-нить С++'овый инструмент вроде Valgrind'а бы помог. Только ставить Linux ради него не хочется. Мог бы помочь к-нить гуру :-) тока его хрен найдешь.
А может я где-то ошибаюсь в логике? У меня сильно смешана индексная и адресная арифметика, так что не все так просто, как кажется на первый раз. Возможно, следует перейти только к адресной.