TObjectList.Clear access нарушение

Я столкнулся с очень странной проблемой с большим приложением. Я интенсивно использую TObjectList, сохраняя в них пользовательский объект. В больших списках я сталкиваюсь с странные сбои с "Нарушение доступа по адресу .. чтение адреса ..", "привилегированная инструкция" и другие, когда я использую метод CLEAR. Я отслеживал, что это происходит именно при попытке удалить последний элемент в списке. Я ' Я проверил это, зарегистрировав удаление содержащихся объектов из их процесса уничтожения, а также попытавшись удалить их самостоятельно (для a: = olist.count-1 до 0 do .. debugmsg ('deleting' + inttostr (a)). . olist.delete (a)), в обоих случаях я получаю право на нарушение прав доступа при удалении ПОСЛЕДНЕГО оставшегося элемента в списке.

Это происходит не всегда, потому что я использую clear в других областях, а также в нескольких других (меньших ) списки, но в очень конкретном месте в моем приложении это происходит.

Я понятия не имею, что может быть не так, нет ничего, что пытается получить доступ к списку во время очистки, а созданные объекты не имеют доступа к своим родительским объектам. objectlist, должно быть что-то не так с методами TObjectList.delete / clear, когда дело доходит до очистки последнего элемента.

Есть предложения? Используя Delphi XE.

7
задан Wim Coenen 24 March 2011 в 18:16
поделиться