Я «изобрел» технику связанного списка в vb6, поместив указатель внутри объекта:
Class FooBar:
Public ptr As FooBar
Теперь я просто держу указатель на заголовок списка внутри Head.ptr
точек к следующему объекту, Head.ptr.ptr
указывает на следующий объект, et c.
Когда я хочу уничтожить список, я просто использую Set Head = Nothing
, это приводит к очистке Head.ptr, который, в свою очередь, запускает очистку Head.ptr.ptr et c, в результате чего получается пустой список (я фактически проверил его, поставив точку останова в событии Class_Terminate).
Это работает красиво и аккуратно, пока мне не понравится 10 000 объектов в списке. Теперь строка Set Head = Nothing
приводит к ошибке «Out of stack memory», после которой IDE cra sh.
Оказывается, vb6 рекурсивно очищает объект (это происходит, даже если у меня нет событие Class_Terminate).
Итак, я подумал, что должен уничтожить список «вручную», с каким-то l oop. но я не мог придумать, как это сделать, так как использование указателя в l oop и установка его на Nothing не делает ... ничего, поскольку он AddRef для объекта!
Что мне делать ???